mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-21 01:00:48 +00:00
remove qualification in StorageJoin JOIN case
This commit is contained in:
parent
c72b0d4e2a
commit
b5658ef1a3
@ -119,6 +119,9 @@ public:
|
||||
const NamesAndTypesList & columnsFromJoinedTable() const { return columns_from_joined_table; }
|
||||
const NamesAndTypesList & columnsAddedByJoin() const { return columns_added_by_join; }
|
||||
|
||||
/// StorageJoin overrides key names (cause of different names qualification)
|
||||
void setRightKeys(const Names & keys) { key_names_right = keys; }
|
||||
|
||||
static bool sameJoin(const AnalyzedJoin * x, const AnalyzedJoin * y);
|
||||
friend JoinPtr makeJoin(std::shared_ptr<AnalyzedJoin> table_join, const Block & right_sample_block);
|
||||
};
|
||||
|
@ -74,6 +74,9 @@ HashJoinPtr StorageJoin::getJoin(std::shared_ptr<AnalyzedJoin> analyzed_join) co
|
||||
|
||||
/// TODO: check key columns
|
||||
|
||||
/// Some HACK to remove wrong names qualifiers: table.column -> column.
|
||||
analyzed_join->setRightKeys(key_names);
|
||||
|
||||
HashJoinPtr join_clone = std::make_shared<Join>(analyzed_join, getSampleBlock().sortColumns());
|
||||
join_clone->reuseJoinedData(*join);
|
||||
return join_clone;
|
||||
|
@ -8,4 +8,5 @@
|
||||
2 2
|
||||
1 1
|
||||
-
|
||||
1 52.5 ONE
|
||||
-
|
||||
|
@ -12,13 +12,13 @@ DROP TABLE testJoinTable;
|
||||
|
||||
SELECT '-';
|
||||
|
||||
SET any_join_distinct_right_table_keys = 1;
|
||||
SET any_join_distinct_right_table_keys = 1;
|
||||
|
||||
DROP TABLE IF EXISTS master;
|
||||
DROP TABLE IF EXISTS transaction;
|
||||
|
||||
CREATE TABLE master (id Int32, name String) ENGINE = Join (ANY, LEFT, id);
|
||||
CREATE TABLE transaction (id Int32, value Float64, master_id Int32) ENGINE = MergeTree() ORDER BY id;
|
||||
CREATE TABLE master (id Int32, name String) ENGINE = Join (ANY, LEFT, id);
|
||||
|
||||
INSERT INTO master VALUES (1, 'ONE');
|
||||
INSERT INTO transaction VALUES (1, 52.5, 1);
|
||||
@ -33,11 +33,12 @@ SELECT '-';
|
||||
DROP TABLE IF EXISTS some_join;
|
||||
DROP TABLE IF EXISTS tbl;
|
||||
|
||||
CREATE TABLE some_join (id String, value String) ENGINE = Join(ANY, LEFT, id);
|
||||
CREATE TABLE tbl (eventDate Date, id String) ENGINE = MergeTree() PARTITION BY tuple() ORDER BY eventDate;
|
||||
CREATE TABLE some_join (id String, value String) ENGINE = Join(ANY, LEFT, id);
|
||||
|
||||
SELECT * FROM tbl AS t ANY LEFT JOIN some_join USING (id);
|
||||
SELECT * FROM tbl AS t ANY LEFT JOIN some_join AS d USING (id);
|
||||
-- TODO SELECT t.*, d.* FROM tbl AS t ANY LEFT JOIN some_join AS d USING (id);
|
||||
|
||||
DROP TABLE some_join;
|
||||
DROP TABLE tbl;
|
||||
|
Loading…
Reference in New Issue
Block a user