PostgreSQL Source Code git master
|
#include "postgres.h"
#include "access/htup_details.h"
#include "access/sysattr.h"
#include "access/table.h"
#include "catalog/pg_aggregate.h"
#include "catalog/pg_authid.h"
#include "catalog/pg_collation.h"
#include "catalog/pg_database.h"
#include "catalog/pg_namespace.h"
#include "catalog/pg_operator.h"
#include "catalog/pg_opfamily.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_ts_config.h"
#include "catalog/pg_ts_dict.h"
#include "catalog/pg_type.h"
#include "commands/defrem.h"
#include "nodes/nodeFuncs.h"
#include "nodes/plannodes.h"
#include "optimizer/optimizer.h"
#include "optimizer/prep.h"
#include "optimizer/tlist.h"
#include "parser/parsetree.h"
#include "postgres_fdw.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/typcache.h"
Go to the source code of this file.
Data Structures | |
struct | foreign_glob_cxt |
struct | foreign_loc_cxt |
struct | deparse_expr_cxt |
Macros | |
#define | REL_ALIAS_PREFIX "r" |
#define | ADD_REL_QUALIFIER(buf, varno) appendStringInfo((buf), "%s%d.", REL_ALIAS_PREFIX, (varno)) |
#define | SUBQUERY_REL_ALIAS_PREFIX "s" |
#define | SUBQUERY_COL_ALIAS_PREFIX "c" |
Typedefs | |
typedef struct foreign_glob_cxt | foreign_glob_cxt |
typedef struct foreign_loc_cxt | foreign_loc_cxt |
typedef struct deparse_expr_cxt | deparse_expr_cxt |
Enumerations | |
enum | FDWCollateState { FDW_COLLATE_NONE , FDW_COLLATE_SAFE , FDW_COLLATE_UNSAFE } |
Functions | |
static bool | foreign_expr_walker (Node *node, foreign_glob_cxt *glob_cxt, foreign_loc_cxt *outer_cxt, foreign_loc_cxt *case_arg_cxt) |
static char * | deparse_type_name (Oid type_oid, int32 typemod) |
static void | deparseTargetList (StringInfo buf, RangeTblEntry *rte, Index rtindex, Relation rel, bool is_returning, Bitmapset *attrs_used, bool qualify_col, List **retrieved_attrs) |
static void | deparseExplicitTargetList (List *tlist, bool is_returning, List **retrieved_attrs, deparse_expr_cxt *context) |
static void | deparseSubqueryTargetList (deparse_expr_cxt *context) |
static void | deparseReturningList (StringInfo buf, RangeTblEntry *rte, Index rtindex, Relation rel, bool trig_after_row, List *withCheckOptionList, List *returningList, List **retrieved_attrs) |
static void | deparseColumnRef (StringInfo buf, int varno, int varattno, RangeTblEntry *rte, bool qualify_col) |
static void | deparseRelation (StringInfo buf, Relation rel) |
static void | deparseExpr (Expr *node, deparse_expr_cxt *context) |
static void | deparseVar (Var *node, deparse_expr_cxt *context) |
static void | deparseConst (Const *node, deparse_expr_cxt *context, int showtype) |
static void | deparseParam (Param *node, deparse_expr_cxt *context) |
static void | deparseSubscriptingRef (SubscriptingRef *node, deparse_expr_cxt *context) |
static void | deparseFuncExpr (FuncExpr *node, deparse_expr_cxt *context) |
static void | deparseOpExpr (OpExpr *node, deparse_expr_cxt *context) |
static bool | isPlainForeignVar (Expr *node, deparse_expr_cxt *context) |
static void | deparseOperatorName (StringInfo buf, Form_pg_operator opform) |
static void | deparseDistinctExpr (DistinctExpr *node, deparse_expr_cxt *context) |
static void | deparseScalarArrayOpExpr (ScalarArrayOpExpr *node, deparse_expr_cxt *context) |
static void | deparseRelabelType (RelabelType *node, deparse_expr_cxt *context) |
static void | deparseArrayCoerceExpr (ArrayCoerceExpr *node, deparse_expr_cxt *context) |
static void | deparseBoolExpr (BoolExpr *node, deparse_expr_cxt *context) |
static void | deparseNullTest (NullTest *node, deparse_expr_cxt *context) |
static void | deparseCaseExpr (CaseExpr *node, deparse_expr_cxt *context) |
static void | deparseArrayExpr (ArrayExpr *node, deparse_expr_cxt *context) |
static void | printRemoteParam (int paramindex, Oid paramtype, int32 paramtypmod, deparse_expr_cxt *context) |
static void | printRemotePlaceholder (Oid paramtype, int32 paramtypmod, deparse_expr_cxt *context) |
static void | deparseSelectSql (List *tlist, bool is_subquery, List **retrieved_attrs, deparse_expr_cxt *context) |
static void | deparseLockingClause (deparse_expr_cxt *context) |
static void | appendOrderByClause (List *pathkeys, bool has_final_sort, deparse_expr_cxt *context) |
static void | appendLimitClause (deparse_expr_cxt *context) |
static void | appendConditions (List *exprs, deparse_expr_cxt *context) |
static void | deparseFromExprForRel (StringInfo buf, PlannerInfo *root, RelOptInfo *foreignrel, bool use_alias, Index ignore_rel, List **ignore_conds, List **additional_conds, List **params_list) |
static void | appendWhereClause (List *exprs, List *additional_conds, deparse_expr_cxt *context) |
static void | deparseFromExpr (List *quals, deparse_expr_cxt *context) |
static void | deparseRangeTblRef (StringInfo buf, PlannerInfo *root, RelOptInfo *foreignrel, bool make_subquery, Index ignore_rel, List **ignore_conds, List **additional_conds, List **params_list) |
static void | deparseAggref (Aggref *node, deparse_expr_cxt *context) |
static void | appendGroupByClause (List *tlist, deparse_expr_cxt *context) |
static void | appendOrderBySuffix (Oid sortop, Oid sortcoltype, bool nulls_first, deparse_expr_cxt *context) |
static void | appendAggOrderBy (List *orderList, List *targetList, deparse_expr_cxt *context) |
static void | appendFunctionName (Oid funcid, deparse_expr_cxt *context) |
static Node * | deparseSortGroupClause (Index ref, List *tlist, bool force_colno, deparse_expr_cxt *context) |
static bool | is_subquery_var (Var *node, RelOptInfo *foreignrel, int *relno, int *colno) |
static void | get_relation_column_alias_ids (Var *node, RelOptInfo *foreignrel, int *relno, int *colno) |
void | classifyConditions (PlannerInfo *root, RelOptInfo *baserel, List *input_conds, List **remote_conds, List **local_conds) |
bool | is_foreign_expr (PlannerInfo *root, RelOptInfo *baserel, Expr *expr) |
bool | is_foreign_param (PlannerInfo *root, RelOptInfo *baserel, Expr *expr) |
bool | is_foreign_pathkey (PlannerInfo *root, RelOptInfo *baserel, PathKey *pathkey) |
List * | build_tlist_to_deparse (RelOptInfo *foreignrel) |
void | deparseSelectStmtForRel (StringInfo buf, PlannerInfo *root, RelOptInfo *rel, List *tlist, List *remote_conds, List *pathkeys, bool has_final_sort, bool has_limit, bool is_subquery, List **retrieved_attrs, List **params_list) |
const char * | get_jointype_name (JoinType jointype) |
void | deparseInsertSql (StringInfo buf, RangeTblEntry *rte, Index rtindex, Relation rel, List *targetAttrs, bool doNothing, List *withCheckOptionList, List *returningList, List **retrieved_attrs, int *values_end_len) |
void | rebuildInsertSql (StringInfo buf, Relation rel, char *orig_query, List *target_attrs, int values_end_len, int num_params, int num_rows) |
void | deparseUpdateSql (StringInfo buf, RangeTblEntry *rte, Index rtindex, Relation rel, List *targetAttrs, List *withCheckOptionList, List *returningList, List **retrieved_attrs) |
void | deparseDirectUpdateSql (StringInfo buf, PlannerInfo *root, Index rtindex, Relation rel, RelOptInfo *foreignrel, List *targetlist, List *targetAttrs, List *remote_conds, List **params_list, List *returningList, List **retrieved_attrs) |
void | deparseDeleteSql (StringInfo buf, RangeTblEntry *rte, Index rtindex, Relation rel, List *returningList, List **retrieved_attrs) |
void | deparseDirectDeleteSql (StringInfo buf, PlannerInfo *root, Index rtindex, Relation rel, RelOptInfo *foreignrel, List *remote_conds, List **params_list, List *returningList, List **retrieved_attrs) |
void | deparseAnalyzeSizeSql (StringInfo buf, Relation rel) |
void | deparseAnalyzeInfoSql (StringInfo buf, Relation rel) |
void | deparseAnalyzeSql (StringInfo buf, Relation rel, PgFdwSamplingMethod sample_method, double sample_frac, List **retrieved_attrs) |
void | deparseTruncateSql (StringInfo buf, List *rels, DropBehavior behavior, bool restart_seqs) |
void | deparseStringLiteral (StringInfo buf, const char *val) |
#define ADD_REL_QUALIFIER | ( | buf, | |
varno | |||
) | appendStringInfo((buf), "%s%d.", REL_ALIAS_PREFIX, (varno)) |
typedef struct deparse_expr_cxt deparse_expr_cxt |
typedef struct foreign_glob_cxt foreign_glob_cxt |
typedef struct foreign_loc_cxt foreign_loc_cxt |
enum FDWCollateState |
Enumerator | |
---|---|
FDW_COLLATE_NONE | |
FDW_COLLATE_SAFE | |
FDW_COLLATE_UNSAFE |
Definition at line 79 of file deparse.c.
|
static |
Definition at line 3803 of file deparse.c.
References appendOrderBySuffix(), appendStringInfoString(), deparse_expr_cxt::buf, buf, deparseSortGroupClause(), exprType(), lfirst, SortGroupClause::nulls_first, SortGroupClause::sortop, and SortGroupClause::tleSortGroupRef.
Referenced by deparseAggref().
|
static |
Definition at line 1604 of file deparse.c.
References appendStringInfoChar(), appendStringInfoString(), deparse_expr_cxt::buf, buf, deparseExpr(), IsA, lfirst, reset_transmission_modes(), and set_transmission_modes().
Referenced by appendWhereClause(), deparseFromExprForRel(), and deparseSelectStmtForRel().
|
static |
Definition at line 4086 of file deparse.c.
References appendStringInfo(), appendStringInfoString(), deparse_expr_cxt::buf, buf, elog, ERROR, get_namespace_name(), GETSTRUCT(), HeapTupleIsValid, NameStr, ObjectIdGetDatum(), proname, quote_identifier(), ReleaseSysCache(), and SearchSysCache1().
Referenced by deparseAggref(), and deparseFuncExpr().
|
static |
Definition at line 3916 of file deparse.c.
References appendStringInfoString(), Assert(), deparse_expr_cxt::buf, buf, deparseSortGroupClause(), Query::groupClause, Query::groupingSets, lfirst, PlannerInfo::parse, deparse_expr_cxt::root, and SortGroupClause::tleSortGroupRef.
Referenced by deparseSelectStmtForRel().
|
static |
Definition at line 4058 of file deparse.c.
References appendStringInfoString(), deparse_expr_cxt::buf, buf, deparseExpr(), reset_transmission_modes(), deparse_expr_cxt::root, root, and set_transmission_modes().
Referenced by deparseSelectStmtForRel().
|
static |
Definition at line 3964 of file deparse.c.
References appendOrderBySuffix(), appendStringInfoString(), deparse_expr_cxt::buf, buf, deparseExpr(), elog, EquivalenceMember::em_datatype, EquivalenceMember::em_expr, ERROR, exprType(), find_em_for_rel(), find_em_for_rel_target(), deparse_expr_cxt::foreignrel, get_opfamily_member_for_cmptype(), IsA, lfirst, OidIsValid, oprid(), PathKey::pk_cmptype, PathKey::pk_nulls_first, PathKey::pk_opfamily, reset_transmission_modes(), deparse_expr_cxt::root, deparse_expr_cxt::scanrel, and set_transmission_modes().
Referenced by deparseSelectStmtForRel().
|
static |
Definition at line 3832 of file deparse.c.
References appendStringInfoString(), deparse_expr_cxt::buf, buf, deparseOperatorName(), elog, ERROR, GETSTRUCT(), TypeCacheEntry::gt_opr, HeapTupleIsValid, lookup_type_cache(), TypeCacheEntry::lt_opr, ObjectIdGetDatum(), ReleaseSysCache(), SearchSysCache1(), TYPECACHE_GT_OPR, and TYPECACHE_LT_OPR.
Referenced by appendAggOrderBy(), and appendOrderByClause().
|
static |
Definition at line 1641 of file deparse.c.
References appendConditions(), appendStringInfoString(), deparse_expr_cxt::buf, buf, lfirst, and NIL.
Referenced by deparseDirectDeleteSql(), deparseDirectUpdateSql(), deparseFromExpr(), and deparseFromExprForRel().
List * build_tlist_to_deparse | ( | RelOptInfo * | foreignrel | ) |
Definition at line 1209 of file deparse.c.
References add_to_flat_tlist(), RestrictInfo::clause, PathTarget::exprs, PgFdwRelationInfo::grouped_tlist, if(), IS_UPPER_REL, lfirst_node, PgFdwRelationInfo::local_conds, NIL, pull_var_clause(), PVC_RECURSE_PLACEHOLDERS, and RelOptInfo::reltarget.
Referenced by estimate_path_cost_size(), and postgresGetForeignPlan().
void classifyConditions | ( | PlannerInfo * | root, |
RelOptInfo * | baserel, | ||
List * | input_conds, | ||
List ** | remote_conds, | ||
List ** | local_conds | ||
) |
Definition at line 218 of file deparse.c.
References RestrictInfo::clause, is_foreign_expr(), lappend(), lfirst_node, NIL, and root.
Referenced by estimate_path_cost_size(), and postgresGetForeignRelSize().
Definition at line 1190 of file deparse.c.
References format_type_extended(), FORMAT_TYPE_FORCE_QUALIFY, FORMAT_TYPE_TYPEMOD_GIVEN, and is_builtin().
Referenced by deparseArrayCoerceExpr(), deparseArrayExpr(), deparseConst(), deparseFuncExpr(), deparseRelabelType(), printRemoteParam(), and printRemotePlaceholder().
|
static |
Definition at line 3711 of file deparse.c.
References Aggref::aggdirectargs, Aggref::aggdistinct, Aggref::aggfilter, Aggref::aggfnoid, Aggref::aggorder, AGGSPLIT_SIMPLE, appendAggOrderBy(), appendFunctionName(), appendStringInfoChar(), appendStringInfoString(), arg, Aggref::args, Assert(), deparse_expr_cxt::buf, buf, deparseExpr(), TargetEntry::expr, if(), lfirst, lnext(), and NIL.
Referenced by deparseExpr().
void deparseAnalyzeInfoSql | ( | StringInfo | buf, |
Relation | rel | ||
) |
Definition at line 2554 of file deparse.c.
References appendStringInfoString(), buf, nameData::data, deparseRelation(), deparseStringLiteral(), initStringInfo(), and relname.
Referenced by postgresGetAnalyzeInfoForForeignTable().
void deparseAnalyzeSizeSql | ( | StringInfo | buf, |
Relation | rel | ||
) |
Definition at line 2532 of file deparse.c.
References appendStringInfo(), appendStringInfoString(), buf, nameData::data, deparseRelation(), deparseStringLiteral(), initStringInfo(), and relname.
Referenced by postgresAnalyzeForeignTable().
void deparseAnalyzeSql | ( | StringInfo | buf, |
Relation | rel, | ||
PgFdwSamplingMethod | sample_method, | ||
double | sample_frac, | ||
List ** | retrieved_attrs | ||
) |
Definition at line 2594 of file deparse.c.
References ANALYZE_SAMPLE_AUTO, ANALYZE_SAMPLE_BERNOULLI, ANALYZE_SAMPLE_OFF, ANALYZE_SAMPLE_RANDOM, ANALYZE_SAMPLE_SYSTEM, appendStringInfo(), appendStringInfoString(), attname, buf, defGetString(), DefElem::defname, deparseRelation(), elog, ERROR, GetForeignColumnOptions(), i, lappend_int(), lfirst, NameStr, TupleDescData::natts, NIL, options, quote_identifier(), RelationGetDescr, RelationGetRelid, and TupleDescAttr().
Referenced by postgresAcquireSampleRowsFunc().
|
static |
Definition at line 3546 of file deparse.c.
References appendStringInfo(), ArrayCoerceExpr::arg, deparse_expr_cxt::buf, COERCE_IMPLICIT_CAST, deparse_type_name(), deparseExpr(), and ArrayCoerceExpr::resulttype.
Referenced by deparseExpr().
|
static |
Definition at line 3685 of file deparse.c.
References appendStringInfo(), appendStringInfoChar(), appendStringInfoString(), deparse_expr_cxt::buf, buf, deparse_type_name(), deparseExpr(), lfirst, and NIL.
Referenced by deparseExpr().
|
static |
Definition at line 3564 of file deparse.c.
References AND_EXPR, appendStringInfo(), appendStringInfoChar(), appendStringInfoString(), BoolExpr::args, BoolExpr::boolop, deparse_expr_cxt::buf, buf, deparseExpr(), lfirst, linitial, NOT_EXPR, and OR_EXPR.
Referenced by deparseExpr().
|
static |
Definition at line 3635 of file deparse.c.
References appendStringInfoChar(), appendStringInfoString(), CaseExpr::arg, CaseExpr::args, deparse_expr_cxt::buf, buf, castNode, CaseExpr::defresult, deparseExpr(), CaseWhen::expr, lfirst, lsecond, and CaseWhen::result.
Referenced by deparseExpr().
|
static |
Definition at line 2714 of file deparse.c.
References ADD_REL_QUALIFIER, appendStringInfo(), appendStringInfoChar(), appendStringInfoString(), Assert(), bms_add_member(), bms_free(), buf, defGetString(), DefElem::defname, deparseTargetList(), FirstLowInvalidHeapAttributeNumber, get_attname(), GetForeignColumnOptions(), IS_SPECIAL_VARNO, lfirst, NoLock, options, quote_identifier(), SelfItemPointerAttributeNumber, table_close(), table_open(), and TableOidAttributeNumber.
Referenced by deparseDirectUpdateSql(), deparseInsertSql(), deparseTargetList(), deparseUpdateSql(), and deparseVar().
|
static |
Definition at line 3056 of file deparse.c.
References appendStringInfo(), appendStringInfoString(), deparse_expr_cxt::buf, buf, Const::consttype, deparse_type_name(), deparseStringLiteral(), getTypeOutputInfo(), OidOutputFunctionCall(), and pfree().
Referenced by deparseExpr(), deparseOpExpr(), and deparseSortGroupClause().
void deparseDeleteSql | ( | StringInfo | buf, |
RangeTblEntry * | rte, | ||
Index | rtindex, | ||
Relation | rel, | ||
List * | returningList, | ||
List ** | retrieved_attrs | ||
) |
Definition at line 2395 of file deparse.c.
References appendStringInfoString(), buf, deparseRelation(), deparseReturningList(), NIL, TriggerDesc::trig_delete_after_row, and RelationData::trigdesc.
Referenced by postgresPlanForeignModify().
void deparseDirectDeleteSql | ( | StringInfo | buf, |
PlannerInfo * | root, | ||
Index | rtindex, | ||
Relation | rel, | ||
RelOptInfo * | foreignrel, | ||
List * | remote_conds, | ||
List ** | params_list, | ||
List * | returningList, | ||
List ** | retrieved_attrs | ||
) |
Definition at line 2424 of file deparse.c.
References appendStringInfo(), appendStringInfoString(), appendWhereClause(), deparse_expr_cxt::buf, buf, deparseExplicitTargetList(), deparseFromExprForRel(), deparseRelation(), deparseReturningList(), deparse_expr_cxt::foreignrel, list_concat(), list_free_deep(), NIL, deparse_expr_cxt::params_list, planner_rt_fetch, REL_ALIAS_PREFIX, RELOPT_JOINREL, RelOptInfo::reloptkind, deparse_expr_cxt::root, root, and deparse_expr_cxt::scanrel.
Referenced by postgresPlanDirectModify().
void deparseDirectUpdateSql | ( | StringInfo | buf, |
PlannerInfo * | root, | ||
Index | rtindex, | ||
Relation | rel, | ||
RelOptInfo * | foreignrel, | ||
List * | targetlist, | ||
List * | targetAttrs, | ||
List * | remote_conds, | ||
List ** | params_list, | ||
List * | returningList, | ||
List ** | retrieved_attrs | ||
) |
Definition at line 2309 of file deparse.c.
References appendStringInfo(), appendStringInfoString(), appendWhereClause(), Assert(), attnum, deparse_expr_cxt::buf, buf, deparseColumnRef(), deparseExplicitTargetList(), deparseExpr(), deparseFromExprForRel(), deparseRelation(), deparseReturningList(), TargetEntry::expr, forboth, deparse_expr_cxt::foreignrel, lfirst_int, lfirst_node, list_concat(), list_free_deep(), NIL, deparse_expr_cxt::params_list, planner_rt_fetch, REL_ALIAS_PREFIX, RELOPT_JOINREL, RelOptInfo::reloptkind, reset_transmission_modes(), deparse_expr_cxt::root, root, deparse_expr_cxt::scanrel, and set_transmission_modes().
Referenced by postgresPlanDirectModify().
|
static |
Definition at line 3470 of file deparse.c.
References appendStringInfoChar(), appendStringInfoString(), OpExpr::args, Assert(), deparse_expr_cxt::buf, buf, deparseExpr(), linitial, list_length(), and lsecond.
Referenced by deparseExpr().
|
static |
Definition at line 1714 of file deparse.c.
References appendStringInfoString(), deparse_expr_cxt::buf, buf, deparseExpr(), TargetEntry::expr, i, lappend_int(), lfirst_node, and NIL.
Referenced by deparseDirectDeleteSql(), deparseDirectUpdateSql(), and deparseSelectSql().
|
static |
Definition at line 2917 of file deparse.c.
References deparseAggref(), deparseArrayCoerceExpr(), deparseArrayExpr(), deparseBoolExpr(), deparseCaseExpr(), deparseConst(), deparseDistinctExpr(), deparseFuncExpr(), deparseNullTest(), deparseOpExpr(), deparseParam(), deparseRelabelType(), deparseScalarArrayOpExpr(), deparseSubscriptingRef(), deparseVar(), elog, ERROR, and nodeTag.
Referenced by appendConditions(), appendLimitClause(), appendOrderByClause(), deparseAggref(), deparseArrayCoerceExpr(), deparseArrayExpr(), deparseBoolExpr(), deparseCaseExpr(), deparseDirectUpdateSql(), deparseDistinctExpr(), deparseExplicitTargetList(), deparseFuncExpr(), deparseNullTest(), deparseOpExpr(), deparseRelabelType(), deparseScalarArrayOpExpr(), deparseSortGroupClause(), deparseSubqueryTargetList(), and deparseSubscriptingRef().
|
static |
Definition at line 1406 of file deparse.c.
References appendStringInfoString(), appendWhereClause(), Assert(), bms_membership(), BMS_MULTIPLE, deparse_expr_cxt::buf, buf, deparseFromExprForRel(), deparse_expr_cxt::foreignrel, IS_JOIN_REL, IS_SIMPLE_REL, IS_UPPER_REL, list_free_deep(), NIL, deparse_expr_cxt::params_list, RelOptInfo::relids, deparse_expr_cxt::root, and deparse_expr_cxt::scanrel.
Referenced by deparseSelectStmtForRel().
|
static |
Definition at line 1794 of file deparse.c.
References appendBinaryStringInfo(), appendConditions(), appendStringInfo(), appendStringInfoChar(), appendStringInfoString(), appendWhereClause(), Assert(), bms_is_member(), deparse_expr_cxt::buf, buf, StringInfoData::data, deparseRangeTblRef(), deparseRelation(), deparse_expr_cxt::foreignrel, get_jointype_name(), if(), initStringInfo(), PgFdwRelationInfo::innerrel, IS_JOIN_REL, JOIN_INNER, JOIN_SEMI, PgFdwRelationInfo::joinclauses, PgFdwRelationInfo::jointype, lappend(), StringInfoData::len, list_concat(), list_free(), list_free_deep(), PgFdwRelationInfo::make_innerrel_subquery, PgFdwRelationInfo::make_outerrel_subquery, NIL, NoLock, PgFdwRelationInfo::outerrel, deparse_expr_cxt::params_list, planner_rt_fetch, REL_ALIAS_PREFIX, RelOptInfo::relid, RelOptInfo::relids, deparse_expr_cxt::root, root, deparse_expr_cxt::scanrel, str, table_close(), and table_open().
Referenced by deparseDirectDeleteSql(), deparseDirectUpdateSql(), deparseFromExpr(), and deparseRangeTblRef().
|
static |
Definition at line 3249 of file deparse.c.
References appendFunctionName(), appendStringInfo(), appendStringInfoChar(), appendStringInfoString(), arg, FuncExpr::args, deparse_expr_cxt::buf, buf, COERCE_EXPLICIT_CAST, COERCE_IMPLICIT_CAST, deparse_type_name(), deparseExpr(), exprIsLengthCoercion(), FuncExpr::funcid, lfirst, linitial, and lnext().
Referenced by deparseExpr().
void deparseInsertSql | ( | StringInfo | buf, |
RangeTblEntry * | rte, | ||
Index | rtindex, | ||
Relation | rel, | ||
List * | targetAttrs, | ||
bool | doNothing, | ||
List * | withCheckOptionList, | ||
List * | returningList, | ||
List ** | retrieved_attrs, | ||
int * | values_end_len | ||
) |
Definition at line 2116 of file deparse.c.
References appendStringInfo(), appendStringInfoChar(), appendStringInfoString(), attnum, buf, deparseColumnRef(), deparseRelation(), deparseReturningList(), lfirst_int, RelationGetDescr, TriggerDesc::trig_insert_after_row, RelationData::trigdesc, and TupleDescAttr().
Referenced by postgresBeginForeignInsert(), and postgresPlanForeignModify().
|
static |
Definition at line 1514 of file deparse.c.
References appendStringInfo(), appendStringInfoString(), bms_is_member(), bms_membership(), BMS_MULTIPLE, bms_next_member(), deparse_expr_cxt::buf, buf, CMD_DELETE, CMD_UPDATE, get_plan_rowmark(), IS_JOIN_REL, LCS_FORKEYSHARE, LCS_FORNOKEYUPDATE, LCS_FORSHARE, LCS_FORUPDATE, LCS_NONE, PgFdwRelationInfo::lower_subquery_rels, REL_ALIAS_PREFIX, RelOptInfo::relids, deparse_expr_cxt::root, root, deparse_expr_cxt::scanrel, PlanRowMark::strength, and while().
Referenced by deparseSelectStmtForRel().
|
static |
Definition at line 3602 of file deparse.c.
References appendStringInfoChar(), appendStringInfoString(), NullTest::arg, deparse_expr_cxt::buf, buf, deparseExpr(), exprType(), IS_NULL, NullTest::nulltesttype, and type_is_rowtype().
Referenced by deparseExpr().
|
static |
Definition at line 3442 of file deparse.c.
References appendStringInfo(), appendStringInfoString(), buf, get_namespace_name(), NameStr, and quote_identifier().
Referenced by appendOrderBySuffix(), deparseOpExpr(), and deparseScalarArrayOpExpr().
|
static |
Definition at line 3312 of file deparse.c.
References appendStringInfoChar(), OpExpr::args, Assert(), deparse_expr_cxt::buf, buf, deparseConst(), deparseExpr(), deparseOperatorName(), elog, ERROR, exprType(), GETSTRUCT(), HeapTupleIsValid, IsA, isPlainForeignVar(), linitial, list_length(), llast, ObjectIdGetDatum(), OpExpr::opno, ReleaseSysCache(), and SearchSysCache1().
Referenced by deparseExpr().
|
static |
Definition at line 3170 of file deparse.c.
References equal(), lappend(), lfirst, deparse_expr_cxt::params_list, Param::paramtype, Param::paramtypmod, printRemoteParam(), and printRemotePlaceholder().
Referenced by deparseExpr().
|
static |
Definition at line 2041 of file deparse.c.
References appendStringInfo(), appendStringInfoChar(), appendStringInfoString(), Assert(), bms_is_member(), buf, deparseFromExprForRel(), deparseSelectStmtForRel(), PathTarget::exprs, i, IS_JOIN_REL, IS_SIMPLE_REL, list_length(), PgFdwRelationInfo::local_conds, NIL, PgFdwRelationInfo::relation_index, RelOptInfo::relids, RelOptInfo::reltarget, PgFdwRelationInfo::remote_conds, root, SUBQUERY_COL_ALIAS_PREFIX, and SUBQUERY_REL_ALIAS_PREFIX.
Referenced by deparseFromExprForRel().
|
static |
Definition at line 3533 of file deparse.c.
References appendStringInfo(), RelabelType::arg, deparse_expr_cxt::buf, COERCE_IMPLICIT_CAST, deparse_type_name(), deparseExpr(), and RelabelType::resulttype.
Referenced by deparseExpr().
|
static |
Definition at line 2842 of file deparse.c.
References appendStringInfo(), buf, defGetString(), DefElem::defname, get_namespace_name(), GetForeignTable(), lfirst, quote_identifier(), RelationGetNamespace, RelationGetRelationName, RelationGetRelid, relname, and table.
Referenced by deparseAnalyzeInfoSql(), deparseAnalyzeSizeSql(), deparseAnalyzeSql(), deparseDeleteSql(), deparseDirectDeleteSql(), deparseDirectUpdateSql(), deparseFromExprForRel(), deparseInsertSql(), deparseTruncateSql(), and deparseUpdateSql().
|
static |
Definition at line 2475 of file deparse.c.
References bms_make_singleton(), buf, deparseTargetList(), FirstLowInvalidHeapAttributeNumber, NIL, and pull_varattnos().
Referenced by deparseDeleteSql(), deparseDirectDeleteSql(), deparseDirectUpdateSql(), deparseInsertSql(), and deparseUpdateSql().
|
static |
Definition at line 3488 of file deparse.c.
References appendStringInfo(), appendStringInfoChar(), ScalarArrayOpExpr::args, Assert(), deparse_expr_cxt::buf, buf, deparseExpr(), deparseOperatorName(), elog, ERROR, GETSTRUCT(), HeapTupleIsValid, linitial, list_length(), lsecond, ObjectIdGetDatum(), ScalarArrayOpExpr::opno, ReleaseSysCache(), SearchSysCache1(), and ScalarArrayOpExpr::useOr.
Referenced by deparseExpr().
|
static |
Definition at line 1348 of file deparse.c.
References appendStringInfoString(), PgFdwRelationInfo::attrs_used, deparse_expr_cxt::buf, buf, deparseExplicitTargetList(), deparseSubqueryTargetList(), deparseTargetList(), deparse_expr_cxt::foreignrel, IS_JOIN_REL, IS_UPPER_REL, NoLock, planner_rt_fetch, RelOptInfo::relid, deparse_expr_cxt::root, root, table_close(), and table_open().
Referenced by deparseSelectStmtForRel().
void deparseSelectStmtForRel | ( | StringInfo | buf, |
PlannerInfo * | root, | ||
RelOptInfo * | rel, | ||
List * | tlist, | ||
List * | remote_conds, | ||
List * | pathkeys, | ||
bool | has_final_sort, | ||
bool | has_limit, | ||
bool | is_subquery, | ||
List ** | retrieved_attrs, | ||
List ** | params_list | ||
) |
Definition at line 1266 of file deparse.c.
References appendConditions(), appendGroupByClause(), appendLimitClause(), appendOrderByClause(), appendStringInfoString(), Assert(), deparse_expr_cxt::buf, buf, deparseFromExpr(), deparseLockingClause(), deparseSelectSql(), deparse_expr_cxt::foreignrel, IS_JOIN_REL, IS_SIMPLE_REL, IS_UPPER_REL, PgFdwRelationInfo::outerrel, deparse_expr_cxt::params_list, PgFdwRelationInfo::remote_conds, deparse_expr_cxt::root, root, and deparse_expr_cxt::scanrel.
Referenced by deparseRangeTblRef(), estimate_path_cost_size(), and postgresGetForeignPlan().
|
static |
Definition at line 4121 of file deparse.c.
References appendStringInfo(), appendStringInfoChar(), Assert(), deparse_expr_cxt::buf, buf, deparseConst(), deparseExpr(), TargetEntry::expr, get_sortgroupref_tle(), IsA, and TargetEntry::resno.
Referenced by appendAggOrderBy(), and appendGroupByClause().
void deparseStringLiteral | ( | StringInfo | buf, |
const char * | val | ||
) |
Definition at line 2882 of file deparse.c.
References appendStringInfoChar(), buf, ESCAPE_STRING_SYNTAX, SQL_STR_DOUBLE, and val.
Referenced by deparseAnalyzeInfoSql(), deparseAnalyzeSizeSql(), deparseConst(), and postgresImportForeignSchema().
|
static |
Definition at line 1750 of file deparse.c.
References appendStringInfoString(), Assert(), deparse_expr_cxt::buf, buf, deparseExpr(), PathTarget::exprs, deparse_expr_cxt::foreignrel, IS_JOIN_REL, IS_SIMPLE_REL, lfirst, and RelOptInfo::reltarget.
Referenced by deparseSelectSql().
|
static |
Definition at line 3203 of file deparse.c.
References appendStringInfoChar(), deparse_expr_cxt::buf, buf, deparseExpr(), IsA, lfirst, list_head(), lnext(), SubscriptingRef::refexpr, SubscriptingRef::reflowerindexpr, and SubscriptingRef::refupperindexpr.
Referenced by deparseExpr().
|
static |
Definition at line 1438 of file deparse.c.
References ADD_REL_QUALIFIER, appendStringInfoString(), bms_is_member(), buf, deparseColumnRef(), FirstLowInvalidHeapAttributeNumber, i, lappend_int(), TupleDescData::natts, NIL, RelationGetDescr, SelfItemPointerAttributeNumber, and TupleDescAttr().
Referenced by deparseColumnRef(), deparseReturningList(), and deparseSelectSql().
void deparseTruncateSql | ( | StringInfo | buf, |
List * | rels, | ||
DropBehavior | behavior, | ||
bool | restart_seqs | ||
) |
Definition at line 2679 of file deparse.c.
References appendStringInfo(), appendStringInfoString(), buf, deparseRelation(), DROP_CASCADE, DROP_RESTRICT, lfirst, and list_head().
Referenced by postgresExecForeignTruncate().
void deparseUpdateSql | ( | StringInfo | buf, |
RangeTblEntry * | rte, | ||
Index | rtindex, | ||
Relation | rel, | ||
List * | targetAttrs, | ||
List * | withCheckOptionList, | ||
List * | returningList, | ||
List ** | retrieved_attrs | ||
) |
Definition at line 2249 of file deparse.c.
References appendStringInfo(), appendStringInfoString(), attnum, buf, deparseColumnRef(), deparseRelation(), deparseReturningList(), lfirst_int, RelationGetDescr, TriggerDesc::trig_update_after_row, RelationData::trigdesc, and TupleDescAttr().
Referenced by postgresPlanForeignModify().
|
static |
Definition at line 2985 of file deparse.c.
References appendStringInfo(), bms_is_member(), bms_membership(), BMS_MULTIPLE, deparse_expr_cxt::buf, deparseColumnRef(), equal(), is_subquery_var(), lappend(), lfirst, deparse_expr_cxt::params_list, planner_rt_fetch, printRemoteParam(), printRemotePlaceholder(), RelOptInfo::relids, deparse_expr_cxt::root, deparse_expr_cxt::scanrel, SUBQUERY_COL_ALIAS_PREFIX, SUBQUERY_REL_ALIAS_PREFIX, Var::varattno, Var::varlevelsup, and Var::varno.
Referenced by deparseExpr().
|
static |
Definition at line 312 of file deparse.c.
References a, Aggref::aggfilter, Aggref::aggfnoid, Aggref::aggorder, AGGSPLIT_SIMPLE, RelabelType::arg, CaseExpr::arg, NullTest::arg, Aggref::args, OpExpr::args, ScalarArrayOpExpr::args, CaseExpr::args, b, bms_is_member(), foreign_loc_cxt::collation, DatumGetObjectId(), CaseExpr::defresult, CaseWhen::expr, TargetEntry::expr, exprType(), FDW_COLLATE_NONE, FDW_COLLATE_SAFE, FDW_COLLATE_UNSAFE, fe(), FirstNormalObjectId, foreign_expr_walker(), foreign_glob_cxt::foreignrel, get_sortgroupref_tle(), TypeCacheEntry::gt_opr, if(), InvalidOid, is_shippable(), IS_UPPER_REL, IsA, lfirst, lfirst_node, linitial, list_length(), lookup_type_cache(), TypeCacheEntry::lt_opr, nodeTag, OidIsValid, OpExpr::opno, ScalarArrayOpExpr::opno, PARAM_MULTIEXPR, Param::paramcollid, Param::paramkind, SubscriptingRef::refassgnexpr, SubscriptingRef::refexpr, SubscriptingRef::reflowerindexpr, SubscriptingRef::refupperindexpr, foreign_glob_cxt::relids, CaseWhen::result, SelfItemPointerAttributeNumber, SortGroupClause::sortop, foreign_loc_cxt::state, strip_implicit_coercions(), SortGroupClause::tleSortGroupRef, TYPECACHE_GT_OPR, TYPECACHE_LT_OPR, Var::varattno, Var::varlevelsup, and Var::varno.
Referenced by foreign_expr_walker(), and is_foreign_expr().
const char * get_jointype_name | ( | JoinType | jointype | ) |
Definition at line 1674 of file deparse.c.
References elog, ERROR, JOIN_FULL, JOIN_INNER, JOIN_LEFT, JOIN_RIGHT, and JOIN_SEMI.
Referenced by deparseFromExprForRel(), and foreign_join_ok().
|
static |
Definition at line 4228 of file deparse.c.
References elog, ERROR, PathTarget::exprs, i, IsA, lfirst, PgFdwRelationInfo::relation_index, RelOptInfo::reltarget, Var::varattno, and Var::varno.
Referenced by is_subquery_var().
bool is_foreign_expr | ( | PlannerInfo * | root, |
RelOptInfo * | baserel, | ||
Expr * | expr | ||
) |
Definition at line 244 of file deparse.c.
References foreign_loc_cxt::collation, contain_mutable_functions(), FDW_COLLATE_NONE, FDW_COLLATE_UNSAFE, foreign_expr_walker(), foreign_glob_cxt::foreignrel, if(), InvalidOid, IS_UPPER_REL, PgFdwRelationInfo::outerrel, foreign_glob_cxt::relids, RelOptInfo::relids, foreign_glob_cxt::root, root, and foreign_loc_cxt::state.
Referenced by add_foreign_final_paths(), classifyConditions(), find_em_for_rel(), find_em_for_rel_target(), foreign_grouping_ok(), foreign_join_ok(), postgresGetForeignPaths(), postgresGetForeignPlan(), and postgresPlanDirectModify().
bool is_foreign_param | ( | PlannerInfo * | root, |
RelOptInfo * | baserel, | ||
Expr * | expr | ||
) |
Definition at line 1115 of file deparse.c.
References bms_is_member(), if(), IS_UPPER_REL, nodeTag, PgFdwRelationInfo::outerrel, RelOptInfo::relids, Var::varlevelsup, and Var::varno.
Referenced by foreign_grouping_ok().
bool is_foreign_pathkey | ( | PlannerInfo * | root, |
RelOptInfo * | baserel, | ||
PathKey * | pathkey | ||
) |
Definition at line 1156 of file deparse.c.
References EquivalenceClass::ec_has_volatile, find_em_for_rel(), if(), is_shippable(), PathKey::pk_opfamily, and root.
Referenced by get_useful_pathkeys_for_relation().
|
static |
Definition at line 4166 of file deparse.c.
References Assert(), bms_is_member(), get_relation_column_alias_ids(), PgFdwRelationInfo::innerrel, IS_JOIN_REL, IS_SIMPLE_REL, is_subquery_var(), PgFdwRelationInfo::lower_subquery_rels, PgFdwRelationInfo::make_innerrel_subquery, PgFdwRelationInfo::make_outerrel_subquery, PgFdwRelationInfo::outerrel, and Var::varno.
Referenced by deparseVar(), and is_subquery_var().
|
static |
Definition at line 3407 of file deparse.c.
References bms_is_member(), COERCE_IMPLICIT_CAST, IsA, RelOptInfo::relids, deparse_expr_cxt::scanrel, Var::varlevelsup, and Var::varno.
Referenced by deparseOpExpr().
|
static |
Definition at line 3877 of file deparse.c.
References appendStringInfo(), deparse_expr_cxt::buf, buf, and deparse_type_name().
Referenced by deparseParam(), and deparseVar().
|
static |
Definition at line 3903 of file deparse.c.
References appendStringInfo(), deparse_expr_cxt::buf, buf, and deparse_type_name().
Referenced by deparseParam(), and deparseVar().
void rebuildInsertSql | ( | StringInfo | buf, |
Relation | rel, | ||
char * | orig_query, | ||
List * | target_attrs, | ||
int | values_end_len, | ||
int | num_params, | ||
int | num_rows | ||
) |
Definition at line 2189 of file deparse.c.
References appendBinaryStringInfo(), appendStringInfo(), appendStringInfoChar(), appendStringInfoString(), Assert(), attnum, buf, i, lfirst_int, RelationGetDescr, and TupleDescAttr().
Referenced by execute_foreign_modify().