Skip to content
This repository was archived by the owner on Mar 13, 2020. It is now read-only.

Commit 891f29b

Browse files
author
Sean Budd
authored
[OSC-1317] remove alter table calls to source db (#43)
* remove alter table calls to source db * add change tracking in integration test create table scripts * add change tracking in unit test create table scripts
1 parent 3c632aa commit 891f29b

File tree

7 files changed

+22
-23
lines changed

7 files changed

+22
-23
lines changed

rdl/DataLoadManager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def start_single_import(self, model_file, requested_full_refresh, model_number,
9595
last_sync_version = last_successful_data_load_execution.sync_version
9696

9797
destination_table_manager = DestinationTableManager(self.target_db)
98-
change_tracking_info = self.source_db.init_change_tracking(model_config['source_table'], last_sync_version)
98+
change_tracking_info = self.source_db.get_change_tracking_info(model_config['source_table'], last_sync_version)
9999

100100
last_successful_execution_exists = last_successful_data_load_execution is not None
101101
model_changed = (not last_successful_execution_exists) or \

rdl/data_sources/CsvDataSource.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,5 @@ def get_next_data_frame(
7575
batch_tracker.extract_completed_successfully(len(data_frame))
7676
return data_frame
7777

78-
def init_change_tracking(self, table_config, last_sync_version):
78+
def get_change_tracking_info(self, table_config, last_sync_version):
7979
return ChangeTrackingInfo(0, 0, False, True)

rdl/data_sources/MsSqlDataSource.py

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -149,23 +149,11 @@ def get_next_data_frame(self, table_config, columns, batch_config, batch_tracker
149149

150150
return data_frame
151151

152-
def init_change_tracking(self, table_config, last_known_sync_version):
152+
def get_change_tracking_info(self, table_config, last_known_sync_version):
153153

154154
if last_known_sync_version is None:
155155
last_known_sync_version = 'NULL'
156156

157-
init_change_tracking_sql = "IF NOT EXISTS(SELECT 1 FROM sys.change_tracking_tables " \
158-
f"WHERE object_id = OBJECT_ID('{table_config['schema']}.{table_config['name']}'))\n" \
159-
"BEGIN\n" \
160-
f"ALTER TABLE {table_config['schema']}.{table_config['name']} " \
161-
f"ENABLE CHANGE_TRACKING WITH(TRACK_COLUMNS_UPDATED=OFF);\n" \
162-
"END\n"
163-
164-
self.logger.debug(f"Initializing ChangeTracking for "
165-
f"{table_config['schema']}.{table_config['name']}:\n"
166-
f"{init_change_tracking_sql}")
167-
self.database_engine.execute(text(init_change_tracking_sql).execution_options(autocommit=True))
168-
169157
# in the following we determine:
170158
# a) the current sync version - sourced straight up from the source db.
171159
# b) the last valid sync version - derived from the last known sync version and its validity based on the

tests/integration_tests/mssql_source/source_database_setup/create_compound_pk.sql

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,8 @@ SELECT 1,2
1717
UNION ALL
1818
SELECT 2,2
1919
UNION ALL
20-
SELECT 2,1
20+
SELECT 2,1;
21+
22+
23+
ALTER TABLE CompoundPk
24+
ENABLE CHANGE_TRACKING WITH(TRACK_COLUMNS_UPDATED=OFF);

tests/integration_tests/mssql_source/source_database_setup/create_large_table.sql

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,8 @@ SELECT n,
4242
CASE WHEN n % 13 = 0 THEN NULL ELSE newid() END,
4343
CASE WHEN n % 3 = 0 THEN NULL ELSE 1 END
4444

45-
FROM Numbers
45+
FROM Numbers;
46+
47+
48+
ALTER TABLE LargeTable
49+
ENABLE CHANGE_TRACKING WITH(TRACK_COLUMNS_UPDATED=OFF);

tests/unit_tests/setup/create_simple_table.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,6 @@ UNION ALL
1616
SELECT 2,'Walker'
1717
UNION ALL
1818
SELECT 3,'National';
19+
20+
ALTER TABLE SimpleTest
21+
ENABLE CHANGE_TRACKING WITH(TRACK_COLUMNS_UPDATED=OFF);

tests/unit_tests/test_MsSqlDataSource.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,19 +59,19 @@ def tearDownClass(cls):
5959
TestMsSqlDataSource.data_source.database_engine.execute(text(TEAR_DOWN_STRING))
6060
TestMsSqlDataSource.data_source = None
6161

62-
def test_init_change_tracking(self):
62+
def test_get_change_tracking_info(self):
6363

6464
last_sync_version = None
6565
for table in TestMsSqlDataSource.table_configs:
6666
print("TESTING ON TABLE: " + table["source_table"]["name"])
6767
print("FIRST TEST: INITIALISE TABLE")
68-
results = TestMsSqlDataSource.data_source.init_change_tracking(
68+
results = TestMsSqlDataSource.data_source.get_change_tracking_info(
6969
table["source_table"], last_sync_version)
7070
self.assertEqual(results.force_full_load, True)
7171

7272
print("SECOND TEST: NO CHANGES")
7373
last_sync_version = results.sync_version
74-
results = TestMsSqlDataSource.data_source.init_change_tracking(
74+
results = TestMsSqlDataSource.data_source.get_change_tracking_info(
7575
table["source_table"], last_sync_version)
7676
self.assertEqual(results.force_full_load, False)
7777

@@ -82,20 +82,20 @@ def test_init_change_tracking(self):
8282
TestMsSqlDataSource.data_source.database_engine.execute(
8383
text(operation_string).execution_options(autocommit=True))
8484

85-
results = TestMsSqlDataSource.data_source.init_change_tracking(
85+
results = TestMsSqlDataSource.data_source.get_change_tracking_info(
8686
table["source_table"], last_sync_version)
8787
self.assertEqual(results.force_full_load, False, msg="Failed on: " + operation_string)
8888
last_sync_version = results.sync_version
8989

9090
print("EXTRA TEST: NO CHANGES")
9191
last_sync_version = results.sync_version
92-
results = TestMsSqlDataSource.data_source.init_change_tracking(
92+
results = TestMsSqlDataSource.data_source.get_change_tracking_info(
9393
table["source_table"], last_sync_version)
9494
self.assertEqual(results.force_full_load, False)
9595

9696
print("EXTRA TEST: LOST TRACK")
9797
last_sync_version = -1
98-
results = TestMsSqlDataSource.data_source.init_change_tracking(table["source_table"], last_sync_version)
98+
results = TestMsSqlDataSource.data_source.get_change_tracking_info(table["source_table"], last_sync_version)
9999
self.assertEqual(results.force_full_load, True)
100100

101101
def test_can_handle_connection_string(self):

0 commit comments

Comments
 (0)