Create column aliases for shard tables in worker queries when requested

pull/2601/head
Murat Tuncer 2019-02-01 10:32:50 +03:00
parent f4d3b94e22
commit 2681231c98
4 changed files with 99 additions and 0 deletions

View File

@ -7134,6 +7134,12 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context)
/* Else print column aliases as needed */ /* Else print column aliases as needed */
get_column_alias_list(colinfo, context); get_column_alias_list(colinfo, context);
} }
/* check if column's are given aliases in distributed tables */
else if (colinfo->parentUsing != NIL)
{
Assert(colinfo->printaliases);
get_column_alias_list(colinfo, context);
}
/* Tablesample clause must go after any alias */ /* Tablesample clause must go after any alias */
if ((rteKind == CITUS_RTE_RELATION || rteKind == CITUS_RTE_SHARD) && if ((rteKind == CITUS_RTE_RELATION || rteKind == CITUS_RTE_SHARD) &&

View File

@ -7151,6 +7151,12 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context)
/* Else print column aliases as needed */ /* Else print column aliases as needed */
get_column_alias_list(colinfo, context); get_column_alias_list(colinfo, context);
} }
/* check if column's are given aliases in distributed tables */
else if (colinfo->parentUsing != NIL)
{
Assert(colinfo->printaliases);
get_column_alias_list(colinfo, context);
}
/* Tablesample clause must go after any alias */ /* Tablesample clause must go after any alias */
if ((rteKind == CITUS_RTE_RELATION || rteKind == CITUS_RTE_SHARD) && if ((rteKind == CITUS_RTE_RELATION || rteKind == CITUS_RTE_SHARD) &&

View File

@ -2690,3 +2690,62 @@ ORDER BY 1;
5 | 5 |
(4 rows) (4 rows)
-- queries where column aliases are used
-- the query is not very complex. join is given an alias with aliases
-- for each output column
SELECT k1
FROM (
SELECT k1, random()
FROM (users_table JOIN events_table USING (user_id)) k (k1, k2, k3)) l
ORDER BY k1
LIMIT 5;
k1
----
1
1
1
1
1
(5 rows)
SELECT DISTINCT k1
FROM (
SELECT k1, random()
FROM (users_table JOIN events_table USING (user_id)) k (k1, k2, k3)) l
ORDER BY k1
LIMIT 5;
k1
----
1
2
3
4
5
(5 rows)
SELECT x1, x3, value_2
FROM (users_table u FULL JOIN events_table e ON (u.user_id = e.user_id)) k(x1, x2, x3, x4, x5)
ORDER BY 1, 2, 3
LIMIT 5;
x1 | x3 | value_2
----+----+---------
1 | 1 | 1
1 | 1 | 1
1 | 1 | 1
1 | 1 | 2
1 | 1 | 2
(5 rows)
SELECT x1, x3, value_2
FROM (users_table u FULL JOIN events_table e USING (user_id)) k(x1, x2, x3, x4, x5)
ORDER BY 1, 2, 3
LIMIT 5;
x1 | x3 | value_2
----+----+---------
1 | 1 | 1
1 | 1 | 1
1 | 1 | 1
1 | 1 | 2
1 | 1 | 2
(5 rows)

View File

@ -2400,3 +2400,31 @@ FROM
USING (user_id) USING (user_id)
GROUP BY a.user_id GROUP BY a.user_id
ORDER BY 1; ORDER BY 1;
-- queries where column aliases are used
-- the query is not very complex. join is given an alias with aliases
-- for each output column
SELECT k1
FROM (
SELECT k1, random()
FROM (users_table JOIN events_table USING (user_id)) k (k1, k2, k3)) l
ORDER BY k1
LIMIT 5;
SELECT DISTINCT k1
FROM (
SELECT k1, random()
FROM (users_table JOIN events_table USING (user_id)) k (k1, k2, k3)) l
ORDER BY k1
LIMIT 5;
SELECT x1, x3, value_2
FROM (users_table u FULL JOIN events_table e ON (u.user_id = e.user_id)) k(x1, x2, x3, x4, x5)
ORDER BY 1, 2, 3
LIMIT 5;
SELECT x1, x3, value_2
FROM (users_table u FULL JOIN events_table e USING (user_id)) k(x1, x2, x3, x4, x5)
ORDER BY 1, 2, 3
LIMIT 5;