Skip to content

Commit 1639914

Browse files
cpcloudkszucs
authored andcommitted
fix(clickhouse): ensure that truncate works
1 parent 5a54489 commit 1639914

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

ibis/backends/clickhouse/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ def drop_database(self, name: str, *, force: bool = False) -> None:
511511

512512
def truncate_table(self, name: str, database: str | None = None) -> None:
513513
ident = self._fully_qualified_name(name, database)
514-
self.raw_sql(f"DELETE FROM {ident}")
514+
self.raw_sql(f"TRUNCATE TABLE {ident}")
515515

516516
def drop_table(
517517
self, name: str, database: str | None = None, force: bool = False

ibis/backends/clickhouse/tests/test_client.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import pandas as pd
22
import pandas.testing as tm
33
import pytest
4+
from clickhouse_driver.dbapi import OperationalError
45
from pytest import param
56

67
import ibis
@@ -260,3 +261,29 @@ def test_create_table_data(con, data, engine):
260261
finally:
261262
con.drop_table(name, force=True, database="tmptables")
262263
assert name not in con.list_tables(database="tmptables")
264+
265+
266+
@pytest.mark.parametrize(
267+
"engine",
268+
[
269+
"File(Native)",
270+
param(
271+
"File(Parquet)",
272+
marks=pytest.mark.xfail(
273+
reason="Parquet file size is 0 bytes", raises=OperationalError
274+
),
275+
),
276+
"Memory",
277+
],
278+
ids=["native", "mem", "parquet"],
279+
)
280+
def test_truncate_table(con, engine):
281+
name = gen_name("clickhouse_create_table_data")
282+
t = con.create_table(name, obj={"a": [1]}, engine=engine, database="tmptables")
283+
try:
284+
assert len(t.execute()) == 1
285+
con.truncate_table(name, database="tmptables")
286+
assert len(t.execute()) == 0
287+
finally:
288+
con.drop_table(name, force=True, database="tmptables")
289+
assert name not in con.list_tables(database="tmptables")

0 commit comments

Comments
 (0)