mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 15:12:02 +00:00
dbms: fixed error with removing temporary columns [#METR-18448].
This commit is contained in:
parent
3d7a3bcd92
commit
fc745dbfa1
@ -36,7 +36,7 @@ inline void evaluateMissingDefaults(Block & block,
|
||||
return;
|
||||
|
||||
/** ExpressionAnalyzer eliminates "unused" columns, in order to ensure their safety
|
||||
* we are going to operate on a copy instead of the original block */
|
||||
* we are going to operate on a copy instead of the original block */
|
||||
Block copy_block{block};
|
||||
/// evaluate default values for defaulted columns
|
||||
ExpressionAnalyzer{default_expr_list, context, {}, required_columns}.getActions(true)->execute(copy_block);
|
||||
|
@ -781,6 +781,9 @@ void ExpressionActions::finalize(const Names & output_columns)
|
||||
|
||||
for (const auto & name : action.prerequisite_names)
|
||||
++columns_refcount[name];
|
||||
|
||||
for (const auto & name_alias : action.projection)
|
||||
++columns_refcount[name_alias.first];
|
||||
}
|
||||
|
||||
Actions new_actions;
|
||||
@ -809,6 +812,8 @@ void ExpressionActions::finalize(const Names & output_columns)
|
||||
|
||||
for (const auto & name : action.prerequisite_names)
|
||||
process(name);
|
||||
|
||||
/// Для projection тут нет уменьшения refcount, так как действие project заменяет имена у столбцов, по сути, уже удаляя их под старыми именами.
|
||||
}
|
||||
|
||||
actions.swap(new_actions);
|
||||
|
@ -0,0 +1,2 @@
|
||||
1 0 0
|
||||
2015-01-01 2015-01-01 01:02:03 111 123 456 789 456 9434005089510819894 9434005089510819894
|
@ -0,0 +1,23 @@
|
||||
DROP TABLE IF EXISTS test.defaults;
|
||||
CREATE TABLE test.defaults (a UInt8, b DEFAULT 0, c DEFAULT identity(b)) ENGINE = Memory;
|
||||
INSERT INTO test.defaults (a) VALUES (1);
|
||||
SELECT * FROM test.defaults;
|
||||
DROP TABLE test.defaults;
|
||||
|
||||
DROP TABLE IF EXISTS test.elog_cut;
|
||||
CREATE TABLE test.elog_cut
|
||||
(
|
||||
date Date DEFAULT toDate(uts),
|
||||
uts DateTime,
|
||||
pr UInt64,
|
||||
ya_uid UInt64,
|
||||
adf_uid UInt64,
|
||||
owner_id UInt32,
|
||||
eff_uid UInt64 DEFAULT if(adf_uid != 0, adf_uid, ya_uid),
|
||||
page_session UInt64 DEFAULT cityHash64(eff_uid, pr),
|
||||
sample_key UInt64 ALIAS page_session
|
||||
) ENGINE = MergeTree(date, cityHash64(adf_uid, ya_uid, pr), (owner_id, date, cityHash64(adf_uid, ya_uid, pr)), 8192);
|
||||
|
||||
INSERT INTO test.elog_cut (uts, pr, ya_uid, adf_uid, owner_id) VALUES ('2015-01-01 01:02:03', 111, 123, 456, 789);
|
||||
SELECT date, uts, pr, ya_uid, adf_uid, owner_id, eff_uid, page_session, sample_key FROM test.elog_cut;
|
||||
DROP TABLE test.elog_cut;
|
Loading…
Reference in New Issue
Block a user