@@ -134,7 +134,8 @@ def _do_upload(
134134 _log (logs , "duplicate_check" , "Checking existing filename" )
135135 cur .execute (
136136 sql .SQL (
137- "SELECT id, file_name, table_name, file_hash, row_count FROM {}.csv_files WHERE file_name = %s"
137+ "SELECT id, file_name, table_name, file_hash, row_count, mode "
138+ "FROM {}.csv_files WHERE file_name = %s"
138139 ).format (sql .Identifier (schema )),
139140 (file_name ,),
140141 )
@@ -151,11 +152,16 @@ def _do_upload(
151152 "logs" : logs ,
152153 }
153154 _log (logs , "overwrite" , f'Overwriting previous upload "{ name_match [1 ]} "' , "warn" )
154- cur .execute (
155- sql .SQL ("DROP TABLE IF EXISTS {}.{}" ).format (
156- sql .Identifier (schema ), sql .Identifier (name_match [2 ])
155+ # table_name is only a bare identifier owned by this schema for
156+ # dynamic-mode rows (csv_<hash>); TE-mode rows store "schema.table"
157+ # pointing at a shared T&E table that must never be dropped here.
158+ # Same guard as te_loader._cleanup_prior_registry_entries.
159+ if name_match [5 ] == "dynamic" and name_match [2 ].startswith ("csv_" ):
160+ cur .execute (
161+ sql .SQL ("DROP TABLE IF EXISTS {}.{}" ).format (
162+ sql .Identifier (schema ), sql .Identifier (name_match [2 ])
163+ )
157164 )
158- )
159165 cur .execute (
160166 sql .SQL ("DELETE FROM {}.csv_files WHERE id = %s" ).format (sql .Identifier (schema )),
161167 (name_match [0 ],),
@@ -166,7 +172,8 @@ def _do_upload(
166172 _log (logs , "duplicate_check" , "Checking existing content hash" )
167173 cur .execute (
168174 sql .SQL (
169- "SELECT id, file_name, table_name, row_count FROM {}.csv_files WHERE file_hash = %s"
175+ "SELECT id, file_name, table_name, row_count, mode "
176+ "FROM {}.csv_files WHERE file_hash = %s"
170177 ).format (sql .Identifier (schema )),
171178 (file_hash ,),
172179 )
@@ -183,11 +190,13 @@ def _do_upload(
183190 "logs" : logs ,
184191 }
185192 _log (logs , "overwrite" , f'Overwriting previous content match "{ content_match [1 ]} "' , "warn" )
186- cur .execute (
187- sql .SQL ("DROP TABLE IF EXISTS {}.{}" ).format (
188- sql .Identifier (schema ), sql .Identifier (content_match [2 ])
193+ # Same TE-vs-dynamic guard as above.
194+ if content_match [4 ] == "dynamic" and content_match [2 ].startswith ("csv_" ):
195+ cur .execute (
196+ sql .SQL ("DROP TABLE IF EXISTS {}.{}" ).format (
197+ sql .Identifier (schema ), sql .Identifier (content_match [2 ])
198+ )
189199 )
190- )
191200 cur .execute (
192201 sql .SQL ("DELETE FROM {}.csv_files WHERE id = %s" ).format (sql .Identifier (schema )),
193202 (content_match [0 ],),
0 commit comments