From b5aaa7f7df1bdf7b9ee965db5084d7767287db56 Mon Sep 17 00:00:00 2001 From: Eddy Frankenberger Date: Mon, 17 Nov 2025 14:41:16 -0500 Subject: [PATCH] Fix #801: Use list() instead of c() to preserve integer type in performanceTable The c() function coerces all elements to the same type. Since delta, start, and endTime are numeric (double/FLOAT64), c() converts the integer analysisId to numeric as well, even though it was explicitly cast to integer. When DatabaseConnector inserts this data into BigQuery, it sends FLOAT64 parameters, but the achilles_performance.analysis_id column is INT64, causing BigQuery to reject the insert. Using list() preserves each element's original type, keeping analysisId as integer (INT64) for proper BigQuery compatibility. --- R/Achilles.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/Achilles.R b/R/Achilles.R index 9c336021..bf2023d1 100755 --- a/R/Achilles.R +++ b/R/Achilles.R @@ -456,7 +456,7 @@ achilles <- function(connectionDetails, endTime <- Sys.time() delta <- endTime - start analysisId <- as.integer(mainSql$analysisId) - performanceTable[nrow(performanceTable) + 1, ] <- c(analysisId, delta, start, endTime) + performanceTable[nrow(performanceTable) + 1, ] <- list(analysisId, delta, start, endTime) ParallelLogger::logInfo(sprintf( "[Main Analysis] [COMPLETE] %d (%f %s)", as.integer(mainSql$analysisId),