From 297bfbc64c43abd5aa9b7031a283d827af408191 Mon Sep 17 00:00:00 2001 From: aditya-balachander Date: Tue, 5 Mar 2024 15:01:51 +0530 Subject: [PATCH 1/3] Cast id column to string --- cumulusci/tasks/bulkdata/query_transformers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cumulusci/tasks/bulkdata/query_transformers.py b/cumulusci/tasks/bulkdata/query_transformers.py index 1618d813e4..3810cb1781 100644 --- a/cumulusci/tasks/bulkdata/query_transformers.py +++ b/cumulusci/tasks/bulkdata/query_transformers.py @@ -1,7 +1,7 @@ import typing as T from functools import cached_property -from sqlalchemy import and_, func, text +from sqlalchemy import and_, func, text, String from sqlalchemy.orm import Query, aliased from cumulusci.core.exceptions import BulkDataException @@ -75,7 +75,7 @@ def join_for_lookup(lookup): return ( lookup.aliased_table, lookup.aliased_table.columns.id - == str(lookup.table) + "-" + value_column, + == str(lookup.table) + "-" + func.cast(value_column, String), ) else: return ( From 63ff89f510acdf57c822bc87ebe04c7f93bd5d01 Mon Sep 17 00:00:00 2001 From: aditya-balachander Date: Tue, 5 Mar 2024 15:36:43 +0530 Subject: [PATCH 2/3] Added tests --- cumulusci/tasks/bulkdata/tests/test_load.py | 6 ++++-- .../bulkdata/tests/test_query_db__joins_self_lookups.sql | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cumulusci/tasks/bulkdata/tests/test_load.py b/cumulusci/tasks/bulkdata/tests/test_load.py index 3277ea3237..3d6f64503b 100644 --- a/cumulusci/tasks/bulkdata/tests/test_load.py +++ b/cumulusci/tasks/bulkdata/tests/test_load.py @@ -871,20 +871,22 @@ def test_get_statics_record_type_not_matched(self): assert "RecordType" in str(e.value) def test_query_db__joins_self_lookups(self): + """SQL file in Old Format""" _validate_query_for_mapping_step( sql_path=Path(__file__).parent / "test_query_db__joins_self_lookups.sql", mapping=Path(__file__).parent / "test_query_db__joins_self_lookups.yml", mapping_step_name="Update Accounts", - expected="""SELECT accounts.id AS accounts_id, accounts."Name" AS "accounts_Name", cumulusci_id_table_1.sf_id AS cumulusci_id_table_1_sf_id FROM accounts LEFT OUTER JOIN cumulusci_id_table AS cumulusci_id_table_1 ON cumulusci_id_table_1.id = ? || accounts.parent_id ORDER BY accounts.parent_id""", + expected="""SELECT accounts.id AS accounts_id, accounts."Name" AS "accounts_Name", cumulusci_id_table_1.sf_id AS cumulusci_id_table_1_sf_id FROM accounts LEFT OUTER JOIN cumulusci_id_table AS cumulusci_id_table_1 ON cumulusci_id_table_1.id = ? || cast(accounts.parent_id as varchar) ORDER BY accounts.parent_id""", old_format=True, ) def test_query_db__joins_polymorphic_lookups(self): + """SQL File in New Format (Polymorphic)""" _validate_query_for_mapping_step( sql_path=Path(__file__).parent / "test_query_db_joins_lookups.sql", mapping=Path(__file__).parent / "test_query_db_joins_lookups.yml", mapping_step_name="Update Event", - expected="""SELECT events.id AS events_id, events."Subject" AS "events_Subject", cumulusci_id_table_1.sf_id AS cumulusci_id_table_1_sf_id FROM events LEFT OUTER JOIN cumulusci_id_table AS cumulusci_id_table_1 ON cumulusci_id_table_1.id = ? || events."WhoId" ORDER BY events."WhoId" """, + expected="""SELECT events.id AS events_id, events."Subject" AS "events_Subject", cumulusci_id_table_1.sf_id AS cumulusci_id_table_1_sf_id FROM events LEFT OUTER JOIN cumulusci_id_table AS cumulusci_id_table_1 ON cumulusci_id_table_1.id = ? || cast(events."WhoId" as varchar) ORDER BY events."WhoId" """, ) @responses.activate diff --git a/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.sql b/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.sql index 818bece666..39b988a9a4 100644 --- a/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.sql +++ b/cumulusci/tasks/bulkdata/tests/test_query_db__joins_self_lookups.sql @@ -1,6 +1,6 @@ BEGIN TRANSACTION; CREATE TABLE "accounts" ( - id VARCHAR(255) NOT NULL, + id INTEGER NOT NULL, "Name" VARCHAR(255), "parent_id" VARCHAR(255), PRIMARY KEY (id) From fceb0c7a7404ceb6e19f386eb21e93e69c4648b2 Mon Sep 17 00:00:00 2001 From: aditya-balachander Date: Tue, 5 Mar 2024 16:03:26 +0530 Subject: [PATCH 3/3] Fix Lint Failure --- cumulusci/tasks/bulkdata/query_transformers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cumulusci/tasks/bulkdata/query_transformers.py b/cumulusci/tasks/bulkdata/query_transformers.py index 3810cb1781..aef23f5dc3 100644 --- a/cumulusci/tasks/bulkdata/query_transformers.py +++ b/cumulusci/tasks/bulkdata/query_transformers.py @@ -1,7 +1,7 @@ import typing as T from functools import cached_property -from sqlalchemy import and_, func, text, String +from sqlalchemy import String, and_, func, text from sqlalchemy.orm import Query, aliased from cumulusci.core.exceptions import BulkDataException