Skip to content

Commit db1a727

Browse files
PtrBldPeter Bludau
andauthored
fix(duckdb): allow creating tables with columns containing sql keywords (#11532)
Co-authored-by: Peter Bludau <peter.bludau@ancorafinance.com>
1 parent a545b34 commit db1a727

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

ibis/backends/duckdb/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,11 @@ def create_table(
220220
final_table = sg.table(name, catalog=catalog, db=database, quoted=quoted)
221221
with self._safe_raw_sql(create_stmt) as cur:
222222
if query is not None:
223+
columns = [
224+
sge.to_identifier(col, quoted=quoted) for col in table.columns
225+
]
223226
insert_stmt = sge.insert(
224-
query, into=initial_table, columns=table.columns
227+
query, into=initial_table, columns=columns
225228
).sql(dialect)
226229
cur.execute(insert_stmt).fetchall()
227230

ibis/backends/duckdb/tests/test_client.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,15 @@ def test_create_temp_table_in_nondefault_schema():
469469
con.create_table("foo", {"id": [1, 2, 3]}, temp=True)
470470

471471

472+
def test_create_table_with_quoted_columns():
473+
con = ibis.duckdb.connect()
474+
name = gen_name("quoted_columns_table")
475+
df = pd.DataFrame(
476+
{"group": ["G1"], "value": ["E1"], "id": [1], "date": [datetime(2025, 5, 13)]}
477+
)
478+
con.create_table(name, df, temp=True)
479+
480+
472481
def test_create_table_with_out_of_order_columns(con):
473482
name = gen_name("out_of_order_columns_table")
474483
df = pd.DataFrame({"value": ["E1"], "id": [1], "date": [datetime(2025, 5, 13)]})

0 commit comments

Comments
 (0)