Skip to content

Commit

Permalink
delete particular table. (#184)
Browse files Browse the repository at this point in the history
* add constraints and logs for delete particular table.

* add test for check delete table

* apply comment

* apply comment

* apply comment

* fix style
  • Loading branch information
k-morozov committed May 23, 2024
1 parent 12bf99d commit ce71143
Show file tree
Hide file tree
Showing 4 changed files with 309 additions and 133 deletions.
49 changes: 47 additions & 2 deletions ch_tools/chadmin/cli/table_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ def columns_command(ctx, database_name, table_name):
is_flag=True,
help="Filter in tables in read-only state only.",
),
constraint=If(IsSet("detached"), then=accept_none, else_=RequireAtLeast(1)),
constraint=If(IsSet("detached"), then=accept_none),
)
@option(
"--cluster",
Expand Down Expand Up @@ -272,6 +272,32 @@ def columns_command(ctx, database_name, table_name):
"dry_run",
],
)
@constraint(
If(IsSet("database_name"), then=accept_none),
[
"database_pattern",
"exclude_database_pattern",
],
)
@constraint(
If(IsSet("database_name"), then=require_all),
[
"table_name",
],
)
@constraint(
If(IsSet("table_name"), then=accept_none),
[
"table_pattern",
"exclude_table_pattern",
],
)
@constraint(
If(IsSet("table_name"), then=require_all),
[
"database_name",
],
)
@pass_context
def delete_command(
ctx,
Expand All @@ -297,7 +323,26 @@ def delete_command(
)
return

for t in list_tables(ctx, **kwargs):
if database_name and table_name:
logging.info("Delete particular table: {}.{}", database_name, table_name)
delete_table(
ctx,
database_name=database_name,
table_name=table_name,
cluster=cluster,
sync_mode=sync_mode,
echo=True,
dry_run=dry_run,
)
return

tables = list_tables(ctx, **kwargs)
if not tables:
logging.warning("No tables by pattern.")
return

for t in tables:
logging.info("Delete table by pattern: {}.{}", t["database"], t["name"])
delete_table(
ctx,
database_name=t["database"],
Expand Down
3 changes: 1 addition & 2 deletions ch_tools/chadmin/internal/table.py
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,6 @@ def _get_table_data(table_metadata_path: str, pattern: str, offset: int) -> str:
parts = line.split()
try:
index = parts.index(pattern)
# check size?
result = parts[index + offset].strip("'")
except ValueError:
raise RuntimeError(
Expand Down Expand Up @@ -324,7 +323,7 @@ def check_table_dettached(ctx, database_name, table_name):
format_="JSON",
)["data"]

if 0 != len(response):
if len(response):
raise RuntimeError(
f"Table '{database_name}'.'{table_name}' is attached. Use delete without --detach flag."
)
Expand Down
129 changes: 0 additions & 129 deletions tests/features/drop_detached_table.feature

This file was deleted.

Loading

0 comments on commit ce71143

Please sign in to comment.