select_into_varlist

This commit is contained in:
weiwt
2022-11-29 23:40:06 +08:00
parent 7b18154c8d
commit 8274c4041d
26 changed files with 1091 additions and 94 deletions

View File

@ -38,6 +38,7 @@
* Backend version and inplace upgrade staffs
*****************************************************************************/
extern const uint32 SELECT_INTO_VAR_VERSION_NUM;
extern const uint32 LARGE_SEQUENCE_VERSION_NUM;
extern const uint32 GRAND_VERSION_NUM;
extern const uint32 DOLPHIN_ENABLE_DROP_NUM;

View File

@ -394,6 +394,7 @@ typedef enum NodeTag {
T_UpdateStmt,
T_MergeStmt,
T_SelectStmt,
T_SelectIntoVarList,
T_AlterTableStmt,
T_AlterTableCmd,
T_AlterDomainStmt,

View File

@ -688,6 +688,12 @@ typedef struct SelectStmt {
/* Eventually add fields for CORRESPONDING spec here */
} SelectStmt;
typedef struct SelectIntoVarList {
NodeTag type;
SubLink *sublink;
List *userVarList;
} SelectIntoVarList;
/* ----------------------
* CREATE TABLE AS Statement (a/k/a SELECT INTO)
*

View File

@ -116,7 +116,8 @@ typedef struct IntoClause {
char* tableSpaceName; /* table space to use, or NULL */
bool skipData; /* true for WITH NO DATA */
bool ivm; /* true for WITH IVM */
char relkind; /* RELKIND_RELATION or RELKIND_MATVIEW */
char relkind; /* RELKIND_RELATION or RELKIND_MATVIEW */
List* userVarList; /* user define variables list */
#ifdef PGXC
struct DistributeBy* distributeby; /* distribution to use, or NULL */
struct PGXCSubCluster* subcluster; /* subcluster node members */

View File

@ -106,6 +106,8 @@ extern Node* eval_const_expressions_params(PlannerInfo* root, Node* node, ParamL
extern Node *eval_const_expression_value(PlannerInfo* root, Node* node, ParamListInfo boundParams);
extern Node* simplify_subselect_expression(Node* node, ParamListInfo boundParams);
extern Node* estimate_expression_value(PlannerInfo* root, Node* node, EState* estate = NULL);
extern Query* inline_set_returning_function(PlannerInfo* root, RangeTblEntry* rte);

View File

@ -31,5 +31,6 @@ extern List* QueryRewriteRefresh(Query *parsetree);
#endif
extern List* QueryRewritePrepareStmt(Query *parsetree);
extern Node* QueryRewriteNonConstant(Node *node);
extern List* QueryRewriteSelectIntoVarList(Node *node);
#endif /* REWRITEHANDLER_H */

View File

@ -503,7 +503,8 @@ extern void init_set_params_htab(void);
extern void init_set_user_params_htab(void);
extern void make_set_message(void);
extern int check_set_message_to_send(const VariableSetStmt* stmt, const char* queryString);
extern int check_set_user_message(const UserSetElem *elem);
extern void check_set_user_message(const UserSetElem *elem);
extern void check_variable_value_info(const char* var_name, const Expr* var_expr);
#define TRANS_ENCRYPT_SAMPLE_RNDM "1234567890ABCDEF"
#define TRANS_ENCRYPT_SAMPLE_STRING "TRANS_ENCRY_SAMPLE_STRING"