From 3ede0790664604ee17d4fbe22172f8b1a37e3b78 Mon Sep 17 00:00:00 2001 From: Martin Vergier Date: Wed, 17 Jun 2026 15:58:31 +0000 Subject: [PATCH] Fix max_lines parameter being overwritten in insert_into_temp_tables loop The parameter was mutated on the first iteration when no limit was set, causing subsequent batches to use a stale value from whichever table was processed first. Co-Authored-By: Claude Sonnet 4.6 --- src/xml2db/document.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/xml2db/document.py b/src/xml2db/document.py index b47f8c5..237bf9c 100644 --- a/src/xml2db/document.py +++ b/src/xml2db/document.py @@ -388,17 +388,16 @@ def insert_into_temp_tables(self, max_lines: int = -1) -> None: for query, data in tb.get_insert_temp_records_statements( self.data.get(tb.type_name, None) ): - if max_lines is None or max_lines < 0: - max_lines = len(data) + batch_size = len(data) if max_lines is None or max_lines < 0 else max_lines start_idx = 0 while start_idx < len(data): with self.model.engine.begin() as conn: self.model.dialect.bulk_insert( conn, query.table, - data[start_idx : (start_idx + max_lines)], + data[start_idx : (start_idx + batch_size)], ) - start_idx = start_idx + max_lines + start_idx = start_idx + batch_size def merge_into_target_tables(self, single_transaction: bool = True) -> int: """Merge data into target data model