mirror of https://github.com/citusdata/citus.git
Merge 63d99f9a21
into 38fea7fe66
commit
84d556f6cd
|
@ -2948,21 +2948,42 @@ get_insert_query_def(Query *query, deparse_context *context)
|
||||||
* Start the query with INSERT INTO relname
|
* Start the query with INSERT INTO relname
|
||||||
*/
|
*/
|
||||||
rte = rt_fetch(query->resultRelation, query->rtable);
|
rte = rt_fetch(query->resultRelation, query->rtable);
|
||||||
Assert(rte->rtekind == RTE_RELATION);
|
Assert(rte->rtekind == RTE_RELATION || GetRangeTblKind(rte) == CITUS_RTE_SHARD);
|
||||||
|
|
||||||
if (PRETTY_INDENT(context))
|
if (PRETTY_INDENT(context))
|
||||||
{
|
{
|
||||||
context->indentLevel += PRETTYINDENT_STD;
|
context->indentLevel += PRETTYINDENT_STD;
|
||||||
appendStringInfoChar(buf, ' ');
|
appendStringInfoChar(buf, ' ');
|
||||||
}
|
}
|
||||||
appendStringInfo(buf, "INSERT INTO %s ",
|
|
||||||
generate_relation_or_shard_name(rte->relid,
|
if(rte->rtekind == RTE_RELATION)
|
||||||
context->distrelid,
|
{
|
||||||
context->shardid, NIL));
|
appendStringInfo(buf, "INSERT INTO %s ",
|
||||||
|
generate_relation_or_shard_name(rte->relid,
|
||||||
|
context->distrelid,
|
||||||
|
context->shardid, NIL));
|
||||||
|
}
|
||||||
|
else if(GetRangeTblKind(rte) == CITUS_RTE_SHARD)
|
||||||
|
{
|
||||||
|
char *fragmentSchemaName = NULL;
|
||||||
|
char *fragmentTableName = NULL;
|
||||||
|
|
||||||
|
ExtractRangeTblExtraData(rte, NULL, &fragmentSchemaName, &fragmentTableName,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
appendStringInfo(buf, "INSERT INTO %s ",
|
||||||
|
generate_fragment_name(fragmentSchemaName, fragmentTableName));
|
||||||
|
}
|
||||||
|
|
||||||
/* INSERT requires AS keyword for target alias */
|
/* INSERT requires AS keyword for target alias */
|
||||||
if (rte->alias != NULL)
|
if (rte->alias != NULL)
|
||||||
appendStringInfo(buf, "AS %s ",
|
{
|
||||||
quote_identifier(rte->alias->aliasname));
|
appendStringInfo(buf, "AS %s ", quote_identifier(rte->alias->aliasname));
|
||||||
|
}
|
||||||
|
else if(GetRangeTblKind(rte) == CITUS_RTE_SHARD)
|
||||||
|
{
|
||||||
|
appendStringInfo(buf, "AS %s ", get_relation_name(rte->relid));
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add the insert-column-names list. To handle indirection properly, we
|
* Add the insert-column-names list. To handle indirection properly, we
|
||||||
|
@ -3144,20 +3165,42 @@ get_update_query_def(Query *query, deparse_context *context)
|
||||||
* Start the query with UPDATE relname SET
|
* Start the query with UPDATE relname SET
|
||||||
*/
|
*/
|
||||||
rte = rt_fetch(query->resultRelation, query->rtable);
|
rte = rt_fetch(query->resultRelation, query->rtable);
|
||||||
Assert(rte->rtekind == RTE_RELATION);
|
Assert(rte->rtekind == RTE_RELATION || GetRangeTblKind(rte) == CITUS_RTE_SHARD);
|
||||||
if (PRETTY_INDENT(context))
|
if (PRETTY_INDENT(context))
|
||||||
{
|
{
|
||||||
appendStringInfoChar(buf, ' ');
|
appendStringInfoChar(buf, ' ');
|
||||||
context->indentLevel += PRETTYINDENT_STD;
|
context->indentLevel += PRETTYINDENT_STD;
|
||||||
}
|
}
|
||||||
appendStringInfo(buf, "UPDATE %s%s",
|
appendStringInfo(buf, "UPDATE %s", only_marker(rte));
|
||||||
only_marker(rte),
|
|
||||||
generate_relation_or_shard_name(rte->relid,
|
if(rte->rtekind == RTE_RELATION)
|
||||||
context->distrelid,
|
{
|
||||||
context->shardid, NIL));
|
appendStringInfo(buf, "%s",
|
||||||
|
generate_relation_or_shard_name(rte->relid,
|
||||||
|
context->distrelid,
|
||||||
|
context->shardid, NIL));
|
||||||
|
}
|
||||||
|
else if(GetRangeTblKind(rte) == CITUS_RTE_SHARD)
|
||||||
|
{
|
||||||
|
char *fragmentSchemaName = NULL;
|
||||||
|
char *fragmentTableName = NULL;
|
||||||
|
|
||||||
|
ExtractRangeTblExtraData(rte, NULL, &fragmentSchemaName, &fragmentTableName,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
appendStringInfoString(buf, generate_fragment_name(fragmentSchemaName,
|
||||||
|
fragmentTableName));
|
||||||
|
}
|
||||||
|
|
||||||
if (rte->alias != NULL)
|
if (rte->alias != NULL)
|
||||||
appendStringInfo(buf, " %s",
|
{
|
||||||
quote_identifier(rte->alias->aliasname));
|
appendStringInfo(buf, " %s", quote_identifier(rte->alias->aliasname));
|
||||||
|
}
|
||||||
|
else if(GetRangeTblKind(rte) == CITUS_RTE_SHARD)
|
||||||
|
{
|
||||||
|
appendStringInfo(buf, " %s", get_relation_name(rte->relid));
|
||||||
|
}
|
||||||
|
|
||||||
appendStringInfoString(buf, " SET ");
|
appendStringInfoString(buf, " SET ");
|
||||||
|
|
||||||
/* Deparse targetlist */
|
/* Deparse targetlist */
|
||||||
|
@ -3341,20 +3384,41 @@ get_delete_query_def(Query *query, deparse_context *context)
|
||||||
* Start the query with DELETE FROM relname
|
* Start the query with DELETE FROM relname
|
||||||
*/
|
*/
|
||||||
rte = rt_fetch(query->resultRelation, query->rtable);
|
rte = rt_fetch(query->resultRelation, query->rtable);
|
||||||
Assert(rte->rtekind == RTE_RELATION);
|
Assert(rte->rtekind == RTE_RELATION || GetRangeTblKind(rte) == CITUS_RTE_SHARD);
|
||||||
if (PRETTY_INDENT(context))
|
if (PRETTY_INDENT(context))
|
||||||
{
|
{
|
||||||
appendStringInfoChar(buf, ' ');
|
appendStringInfoChar(buf, ' ');
|
||||||
context->indentLevel += PRETTYINDENT_STD;
|
context->indentLevel += PRETTYINDENT_STD;
|
||||||
}
|
}
|
||||||
appendStringInfo(buf, "DELETE FROM %s%s",
|
appendStringInfo(buf, "DELETE FROM %s", only_marker(rte));
|
||||||
only_marker(rte),
|
|
||||||
generate_relation_or_shard_name(rte->relid,
|
if(rte->rtekind == RTE_RELATION)
|
||||||
context->distrelid,
|
{
|
||||||
context->shardid, NIL));
|
appendStringInfo(buf, "%s",
|
||||||
|
generate_relation_or_shard_name(rte->relid,
|
||||||
|
context->distrelid,
|
||||||
|
context->shardid, NIL));
|
||||||
|
}
|
||||||
|
else if(GetRangeTblKind(rte) == CITUS_RTE_SHARD)
|
||||||
|
{
|
||||||
|
char *fragmentSchemaName = NULL;
|
||||||
|
char *fragmentTableName = NULL;
|
||||||
|
|
||||||
|
ExtractRangeTblExtraData(rte, NULL, &fragmentSchemaName, &fragmentTableName,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
appendStringInfoString(buf, generate_fragment_name(fragmentSchemaName,
|
||||||
|
fragmentTableName));
|
||||||
|
}
|
||||||
|
|
||||||
if (rte->alias != NULL)
|
if (rte->alias != NULL)
|
||||||
appendStringInfo(buf, " %s",
|
{
|
||||||
quote_identifier(rte->alias->aliasname));
|
appendStringInfo(buf, " %s", quote_identifier(rte->alias->aliasname));
|
||||||
|
}
|
||||||
|
else if(GetRangeTblKind(rte) == CITUS_RTE_SHARD)
|
||||||
|
{
|
||||||
|
appendStringInfo(buf, " %s", get_relation_name(rte->relid));
|
||||||
|
}
|
||||||
|
|
||||||
/* Add the USING clause if given */
|
/* Add the USING clause if given */
|
||||||
get_from_clause(query, " USING ", context);
|
get_from_clause(query, " USING ", context);
|
||||||
|
|
|
@ -2970,21 +2970,42 @@ get_insert_query_def(Query *query, deparse_context *context)
|
||||||
* Start the query with INSERT INTO relname
|
* Start the query with INSERT INTO relname
|
||||||
*/
|
*/
|
||||||
rte = rt_fetch(query->resultRelation, query->rtable);
|
rte = rt_fetch(query->resultRelation, query->rtable);
|
||||||
Assert(rte->rtekind == RTE_RELATION);
|
Assert(rte->rtekind == RTE_RELATION || GetRangeTblKind(rte) == CITUS_RTE_SHARD);
|
||||||
|
|
||||||
if (PRETTY_INDENT(context))
|
if (PRETTY_INDENT(context))
|
||||||
{
|
{
|
||||||
context->indentLevel += PRETTYINDENT_STD;
|
context->indentLevel += PRETTYINDENT_STD;
|
||||||
appendStringInfoChar(buf, ' ');
|
appendStringInfoChar(buf, ' ');
|
||||||
}
|
}
|
||||||
appendStringInfo(buf, "INSERT INTO %s ",
|
|
||||||
generate_relation_or_shard_name(rte->relid,
|
if(rte->rtekind == RTE_RELATION)
|
||||||
context->distrelid,
|
{
|
||||||
context->shardid, NIL));
|
appendStringInfo(buf, "INSERT INTO %s ",
|
||||||
|
generate_relation_or_shard_name(rte->relid,
|
||||||
|
context->distrelid,
|
||||||
|
context->shardid, NIL));
|
||||||
|
}
|
||||||
|
else if(GetRangeTblKind(rte) == CITUS_RTE_SHARD)
|
||||||
|
{
|
||||||
|
char *fragmentSchemaName = NULL;
|
||||||
|
char *fragmentTableName = NULL;
|
||||||
|
|
||||||
|
ExtractRangeTblExtraData(rte, NULL, &fragmentSchemaName, &fragmentTableName,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
appendStringInfo(buf, "INSERT INTO %s ",
|
||||||
|
generate_fragment_name(fragmentSchemaName, fragmentTableName));
|
||||||
|
}
|
||||||
|
|
||||||
/* INSERT requires AS keyword for target alias */
|
/* INSERT requires AS keyword for target alias */
|
||||||
if (rte->alias != NULL)
|
if (rte->alias != NULL)
|
||||||
appendStringInfo(buf, "AS %s ",
|
{
|
||||||
quote_identifier(rte->alias->aliasname));
|
appendStringInfo(buf, "AS %s ", quote_identifier(rte->alias->aliasname));
|
||||||
|
}
|
||||||
|
else if(GetRangeTblKind(rte) == CITUS_RTE_SHARD)
|
||||||
|
{
|
||||||
|
appendStringInfo(buf, "AS %s ", get_relation_name(rte->relid));
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add the insert-column-names list. Any indirection decoration needed on
|
* Add the insert-column-names list. Any indirection decoration needed on
|
||||||
|
@ -3152,20 +3173,42 @@ get_update_query_def(Query *query, deparse_context *context)
|
||||||
* Start the query with UPDATE relname SET
|
* Start the query with UPDATE relname SET
|
||||||
*/
|
*/
|
||||||
rte = rt_fetch(query->resultRelation, query->rtable);
|
rte = rt_fetch(query->resultRelation, query->rtable);
|
||||||
Assert(rte->rtekind == RTE_RELATION);
|
Assert(rte->rtekind == RTE_RELATION || GetRangeTblKind(rte) == CITUS_RTE_SHARD);
|
||||||
if (PRETTY_INDENT(context))
|
if (PRETTY_INDENT(context))
|
||||||
{
|
{
|
||||||
appendStringInfoChar(buf, ' ');
|
appendStringInfoChar(buf, ' ');
|
||||||
context->indentLevel += PRETTYINDENT_STD;
|
context->indentLevel += PRETTYINDENT_STD;
|
||||||
}
|
}
|
||||||
appendStringInfo(buf, "UPDATE %s%s",
|
appendStringInfo(buf, "UPDATE %s", only_marker(rte));
|
||||||
only_marker(rte),
|
|
||||||
generate_relation_or_shard_name(rte->relid,
|
if(rte->rtekind == RTE_RELATION)
|
||||||
context->distrelid,
|
{
|
||||||
context->shardid, NIL));
|
appendStringInfo(buf, "%s",
|
||||||
|
generate_relation_or_shard_name(rte->relid,
|
||||||
|
context->distrelid,
|
||||||
|
context->shardid, NIL));
|
||||||
|
}
|
||||||
|
else if(GetRangeTblKind(rte) == CITUS_RTE_SHARD)
|
||||||
|
{
|
||||||
|
char *fragmentSchemaName = NULL;
|
||||||
|
char *fragmentTableName = NULL;
|
||||||
|
|
||||||
|
ExtractRangeTblExtraData(rte, NULL, &fragmentSchemaName, &fragmentTableName,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
appendStringInfoString(buf, generate_fragment_name(fragmentSchemaName,
|
||||||
|
fragmentTableName));
|
||||||
|
}
|
||||||
|
|
||||||
if (rte->alias != NULL)
|
if (rte->alias != NULL)
|
||||||
appendStringInfo(buf, " %s",
|
{
|
||||||
quote_identifier(rte->alias->aliasname));
|
appendStringInfo(buf, " %s", quote_identifier(rte->alias->aliasname));
|
||||||
|
}
|
||||||
|
else if(GetRangeTblKind(rte) == CITUS_RTE_SHARD)
|
||||||
|
{
|
||||||
|
appendStringInfo(buf, " %s", get_relation_name(rte->relid));
|
||||||
|
}
|
||||||
|
|
||||||
appendStringInfoString(buf, " SET ");
|
appendStringInfoString(buf, " SET ");
|
||||||
|
|
||||||
/* Deparse targetlist */
|
/* Deparse targetlist */
|
||||||
|
@ -3349,20 +3392,41 @@ get_delete_query_def(Query *query, deparse_context *context)
|
||||||
* Start the query with DELETE FROM relname
|
* Start the query with DELETE FROM relname
|
||||||
*/
|
*/
|
||||||
rte = rt_fetch(query->resultRelation, query->rtable);
|
rte = rt_fetch(query->resultRelation, query->rtable);
|
||||||
Assert(rte->rtekind == RTE_RELATION);
|
Assert(rte->rtekind == RTE_RELATION || GetRangeTblKind(rte) == CITUS_RTE_SHARD);
|
||||||
if (PRETTY_INDENT(context))
|
if (PRETTY_INDENT(context))
|
||||||
{
|
{
|
||||||
appendStringInfoChar(buf, ' ');
|
appendStringInfoChar(buf, ' ');
|
||||||
context->indentLevel += PRETTYINDENT_STD;
|
context->indentLevel += PRETTYINDENT_STD;
|
||||||
}
|
}
|
||||||
appendStringInfo(buf, "DELETE FROM %s%s",
|
appendStringInfo(buf, "DELETE FROM %s", only_marker(rte));
|
||||||
only_marker(rte),
|
|
||||||
generate_relation_or_shard_name(rte->relid,
|
if(rte->rtekind == RTE_RELATION)
|
||||||
context->distrelid,
|
{
|
||||||
context->shardid, NIL));
|
appendStringInfo(buf, "%s",
|
||||||
|
generate_relation_or_shard_name(rte->relid,
|
||||||
|
context->distrelid,
|
||||||
|
context->shardid, NIL));
|
||||||
|
}
|
||||||
|
else if(GetRangeTblKind(rte) == CITUS_RTE_SHARD)
|
||||||
|
{
|
||||||
|
char *fragmentSchemaName = NULL;
|
||||||
|
char *fragmentTableName = NULL;
|
||||||
|
|
||||||
|
ExtractRangeTblExtraData(rte, NULL, &fragmentSchemaName, &fragmentTableName,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
appendStringInfoString(buf, generate_fragment_name(fragmentSchemaName,
|
||||||
|
fragmentTableName));
|
||||||
|
}
|
||||||
|
|
||||||
if (rte->alias != NULL)
|
if (rte->alias != NULL)
|
||||||
appendStringInfo(buf, " %s",
|
{
|
||||||
quote_identifier(rte->alias->aliasname));
|
appendStringInfo(buf, " %s", quote_identifier(rte->alias->aliasname));
|
||||||
|
}
|
||||||
|
else if(GetRangeTblKind(rte) == CITUS_RTE_SHARD)
|
||||||
|
{
|
||||||
|
appendStringInfo(buf, " %s", get_relation_name(rte->relid));
|
||||||
|
}
|
||||||
|
|
||||||
/* Add the USING clause if given */
|
/* Add the USING clause if given */
|
||||||
get_from_clause(query, " USING ", context);
|
get_from_clause(query, " USING ", context);
|
||||||
|
|
Loading…
Reference in New Issue