Fixed DROP INDEX IF EXISTS and added simple test

This commit is contained in:
Gleb Novikov 2019-06-04 00:08:52 +03:00
parent db6de83fa1
commit 8bd2c7b3a7
3 changed files with 31 additions and 1 deletions

View File

@ -293,8 +293,12 @@ void AlterCommand::apply(ColumnsDescription & columns_description, IndicesDescri
});
if (erase_it == indices_description.indices.end())
{
if (if_exists)
return;
throw Exception("Wrong index name. Cannot find index `" + index_name + "` to drop.",
ErrorCodes::LOGICAL_ERROR);
ErrorCodes::LOGICAL_ERROR);
}
indices_description.indices.erase(erase_it);
}

View File

@ -0,0 +1,25 @@
#!/usr/bin/env bash
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
. $CURDIR/../shell_config.sh
EXCEPTION_SUCCESS_TEXT=ok
$CLICKHOUSE_CLIENT --query="DROP TABLE IF EXISTS test_drop_indices;"
$CLICKHOUSE_CLIENT --query="CREATE TABLE test_drop_indices
(
a UInt32,
b UInt32
)
ENGINE = MergeTree ORDER BY (a);"
# Must throw exception
EXCEPTION_TEXT="Cannot find index \`test_index\` to drop.."
$CLICKHOUSE_CLIENT --query="ALTER TABLE test_drop_indices DROP INDEX test_index;" 2>&1 \
| grep -q "$EXCEPTION_TEXT" && echo "$EXCEPTION_SUCCESS_TEXT" || echo "Did not thrown an exception"
# Must not throw an exception
$CLICKHOUSE_CLIENT --query="ALTER TABLE test_drop_indices DROP INDEX IF EXISTS test_index"
$CLICKHOUSE_CLIENT --query="DROP TABLE test_drop_indices;"