From 9458a24cd7f8ba22bcf5a0bfbe68456a9b06dce4 Mon Sep 17 00:00:00 2001 From: Ashin Gau Date: Fri, 26 May 2023 20:04:45 +0800 Subject: [PATCH] [fix](multi-catalog) values in sqlserver should be enclosed by single quotes (#19971) Fix errors when inserting string/date/datetime values into SQLServer: ERROR 1105 (HY000): errCode = 2, detailMessage = (172.21.0.101)[INTERNAL_ERROR]UdfRuntimeException: JDBC executor sql has error: CAUSED BY: SQLServerException: Invalid column name '2021-10-30'. When using double quotes enclose string values, it will be parsed as column name, so we should enclose string values with single quotes. --- be/src/exec/table_connector.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/be/src/exec/table_connector.cpp b/be/src/exec/table_connector.cpp index 0a469defca..82b82e077c 100644 --- a/be/src/exec/table_connector.cpp +++ b/be/src/exec/table_connector.cpp @@ -231,6 +231,9 @@ Status TableConnector::convert_column_data(const vectorized::ColumnPtr& column_p } } else if (table_type == TOdbcTableType::POSTGRESQL) { fmt::format_to(_insert_stmt_buffer, "'{}'::date", str); + } else if (table_type == TOdbcTableType::SQLSERVER) { + // Values in sqlserver should be enclosed by single quotes + fmt::format_to(_insert_stmt_buffer, "'{}'", str); } else { fmt::format_to(_insert_stmt_buffer, "\"{}\"", str); }