From 9212a01b7f7e11f6a7f6c1c0b4537e3ea25d52a6 Mon Sep 17 00:00:00 2001 From: Matthew Will Date: Tue, 30 Jan 2024 14:11:20 -0600 Subject: [PATCH 1/4] Update sql.py --- singer_sdk/sinks/sql.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/singer_sdk/sinks/sql.py b/singer_sdk/sinks/sql.py index 3a37570d6..29563d0cb 100644 --- a/singer_sdk/sinks/sql.py +++ b/singer_sdk/sinks/sql.py @@ -282,7 +282,7 @@ def generate_insert_statement( statement = dedent( f"""\ INSERT INTO {full_table_name} - ({", ".join(property_names)}) + ({", ".join([f'"{name}"' for name in property_names])}) VALUES ({", ".join([f":{name}" for name in property_names])}) """, # noqa: S608 ) From 6f39c03717245525d2f7764cda5310e516fd65aa Mon Sep 17 00:00:00 2001 From: Matthew Will Date: Tue, 30 Jan 2024 14:40:49 -0600 Subject: [PATCH 2/4] Mattwill09 patch 1 (#1) * Update sql.py * Update test_target_sqlite.py --- singer_sdk/sinks/sql.py | 3 ++- tests/samples/test_target_sqlite.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/singer_sdk/sinks/sql.py b/singer_sdk/sinks/sql.py index 29563d0cb..15b933e3e 100644 --- a/singer_sdk/sinks/sql.py +++ b/singer_sdk/sinks/sql.py @@ -10,6 +10,7 @@ import sqlalchemy as sa from pendulum import now +from sqlalchemy.sql import quoted_name from sqlalchemy.sql.expression import bindparam from singer_sdk.connectors import SQLConnector @@ -282,7 +283,7 @@ def generate_insert_statement( statement = dedent( f"""\ INSERT INTO {full_table_name} - ({", ".join([f'"{name}"' for name in property_names])}) + ({", ".join(quoted_name(name) for name in property_names)}) VALUES ({", ".join([f":{name}" for name in property_names])}) """, # noqa: S608 ) diff --git a/tests/samples/test_target_sqlite.py b/tests/samples/test_target_sqlite.py index 0d34c60a1..f56ad1211 100644 --- a/tests/samples/test_target_sqlite.py +++ b/tests/samples/test_target_sqlite.py @@ -490,7 +490,7 @@ def test_record_with_missing_properties( dedent( """\ INSERT INTO test_stream - (id, name) + ("id", "name") VALUES (:id, :name)""", ), ), From 342247a82aa6cd55542cf11b1076446421ac14fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edgar=20Ram=C3=ADrez=20Mondrag=C3=B3n?= <16805946+edgarrmondragon@users.noreply.github.com> Date: Tue, 30 Jan 2024 14:55:45 -0600 Subject: [PATCH 3/4] Update singer_sdk/sinks/sql.py --- singer_sdk/sinks/sql.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/singer_sdk/sinks/sql.py b/singer_sdk/sinks/sql.py index 15b933e3e..12912c6c2 100644 --- a/singer_sdk/sinks/sql.py +++ b/singer_sdk/sinks/sql.py @@ -283,7 +283,7 @@ def generate_insert_statement( statement = dedent( f"""\ INSERT INTO {full_table_name} - ({", ".join(quoted_name(name) for name in property_names)}) + ({", ".join(quoted_name(name, True) for name in property_names)}) VALUES ({", ".join([f":{name}" for name in property_names])}) """, # noqa: S608 ) From 2334a172c399f7dbf99f00eeb2f3f97126d118fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edgar=20Ram=C3=ADrez-Mondrag=C3=B3n?= Date: Tue, 30 Jan 2024 15:44:36 -0600 Subject: [PATCH 4/4] Use IdentifierPreparer --- singer_sdk/sinks/sql.py | 6 +++++- tests/samples/test_target_sqlite.py | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/singer_sdk/sinks/sql.py b/singer_sdk/sinks/sql.py index 12912c6c2..991ba431a 100644 --- a/singer_sdk/sinks/sql.py +++ b/singer_sdk/sinks/sql.py @@ -280,10 +280,14 @@ def generate_insert_statement( An insert statement. """ property_names = list(self.conform_schema(schema)["properties"].keys()) + column_identifiers = [ + self.connector.quote(quoted_name(name, quote=True)) + for name in property_names + ] statement = dedent( f"""\ INSERT INTO {full_table_name} - ({", ".join(quoted_name(name, True) for name in property_names)}) + ({", ".join(column_identifiers)}) VALUES ({", ".join([f":{name}" for name in property_names])}) """, # noqa: S608 ) diff --git a/tests/samples/test_target_sqlite.py b/tests/samples/test_target_sqlite.py index f56ad1211..edf88ee92 100644 --- a/tests/samples/test_target_sqlite.py +++ b/tests/samples/test_target_sqlite.py @@ -484,14 +484,15 @@ def test_record_with_missing_properties( "properties": { "id": {"type": "integer"}, "name": {"type": "string"}, + "table": {"type": "string"}, }, }, [], dedent( """\ INSERT INTO test_stream - ("id", "name") - VALUES (:id, :name)""", + (id, name, "table") + VALUES (:id, :name, :table)""", ), ), ],