forked from huawei/openGauss-server
Offering: openGaussDev
More detail: # Conflicts: # src/gausskernel/storage/tcap/tcap_manager.cpp Match-id-c0b0a159ce50e302e53a882e1916b594b0f47286
This commit is contained in:
parent
e5970d87e0
commit
1d66aded47
|
|
@ -19590,6 +19590,11 @@ for_locking_items:
|
|||
for_locking_item:
|
||||
FOR UPDATE hint_string locked_rels_list opt_nowait
|
||||
{
|
||||
if (u_sess->parser_cxt.isTimeCapsule) {
|
||||
u_sess->parser_cxt.isTimeCapsule = false;
|
||||
ereport(errstate, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("SELECT TIMECAPSULE FOR UPDATE is not supported.")));
|
||||
}
|
||||
LockingClause *n = makeNode(LockingClause);
|
||||
n->lockedRels = $4;
|
||||
n->forUpdate = TRUE;
|
||||
|
|
@ -20193,22 +20198,22 @@ timecapsule_clause:
|
|||
TIMECAPSULE opt_timecapsule_clause { $$ = $2; }
|
||||
|
||||
opt_timecapsule_clause:
|
||||
CSN a_expr
|
||||
CSN {u_sess->parser_cxt.isTimeCapsule = true;} a_expr
|
||||
{
|
||||
TcapFeatureEnsure();
|
||||
RangeTimeCapsule *n = makeNode(RangeTimeCapsule);
|
||||
n->tvtype = TV_VERSION_CSN;
|
||||
n->tvver = (Node *)$2;
|
||||
n->location = @2;
|
||||
n->tvver = (Node *)$3;
|
||||
n->location = @3;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| TIMESTAMP a_expr
|
||||
| TIMESTAMP {u_sess->parser_cxt.isTimeCapsule = true;} a_expr
|
||||
{
|
||||
TcapFeatureEnsure();
|
||||
RangeTimeCapsule *n = makeNode(RangeTimeCapsule);
|
||||
n->tvtype = TV_VERSION_TIMESTAMP;
|
||||
n->tvver = (Node *)$2;
|
||||
n->location = @2;
|
||||
n->tvver = (Node *)$3;
|
||||
n->location = @3;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
;
|
||||
|
|
|
|||
|
|
@ -28,6 +28,11 @@
|
|||
|
||||
extern void resetOperatorPlusFlag();
|
||||
|
||||
static void resetIsTimeCapsuleFlag()
|
||||
{
|
||||
u_sess->parser_cxt.isTimeCapsule = false;
|
||||
}
|
||||
|
||||
static void resetCreateFuncFlag()
|
||||
{
|
||||
u_sess->parser_cxt.isCreateFuncOrProc = false;
|
||||
|
|
@ -48,6 +53,9 @@ List* raw_parser(const char* str, List** query_string_locationlist)
|
|||
/* reset u_sess->parser_cxt.stmt_contains_operator_plus */
|
||||
resetOperatorPlusFlag();
|
||||
|
||||
/* reset u_sess->parser_cxt.isTimeCapsule */
|
||||
resetIsTimeCapsuleFlag();
|
||||
|
||||
/* reset u_sess->parser_cxt.isCreateFuncOrProc */
|
||||
resetCreateFuncFlag();
|
||||
|
||||
|
|
|
|||
|
|
@ -280,6 +280,7 @@ static void knl_u_parser_init(knl_u_parser_context* parser_cxt)
|
|||
parser_cxt->ddl_pbe_context = NULL;
|
||||
parser_cxt->in_package_function_compile = false;
|
||||
parser_cxt->isCreateFuncOrProc = false;
|
||||
parser_cxt->isTimeCapsule = false;
|
||||
}
|
||||
|
||||
static void knl_u_advisor_init(knl_u_advisor_context* adv_cxt)
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -417,6 +417,8 @@ typedef struct knl_u_parser_context {
|
|||
|
||||
/* this is used in parser.gram.y not in plpgsql */
|
||||
bool isCreateFuncOrProc;
|
||||
|
||||
bool isTimeCapsule;
|
||||
} knl_u_parser_context;
|
||||
|
||||
typedef struct knl_u_trigger_context {
|
||||
|
|
|
|||
Loading…
Reference in New Issue