@@ -59,7 +59,7 @@ PG_MODULE_MAGIC;
59
59
#error VOPS requires 64-bit version of Postgres
60
60
#endif
61
61
62
- #if PG_VERSION_NUM >=150000
62
+ #if PG_VERSION_NUM >=140000
63
63
#define FUNC_CALL_CTX COERCE_EXPLICIT_CALL, -1
64
64
#else
65
65
#define FUNC_CALL_CTX -1
@@ -1157,7 +1157,7 @@ UserTableUpdateOpenIndexes()
1157
1157
if (HeapTupleIsHeapOnly (tuple ))
1158
1158
return ;
1159
1159
1160
- #if PG_VERSION_NUM >=150000
1160
+ #if PG_VERSION_NUM >=140000
1161
1161
if (estate -> es_result_relations [0 ]-> ri_NumIndices > 0 )
1162
1162
{
1163
1163
recheckIndexes = ExecInsertIndexTuples (estate -> es_result_relations [0 ],
@@ -1171,7 +1171,7 @@ UserTableUpdateOpenIndexes()
1171
1171
& tuple -> t_self ,
1172
1172
#endif
1173
1173
estate ,
1174
- #if PG_VERSION_NUM >=150000
1174
+ #if PG_VERSION_NUM >=140000
1175
1175
true ,
1176
1176
#endif
1177
1177
false, NULL , NIL );
@@ -1198,7 +1198,7 @@ static void begin_batch_insert(Oid oid)
1198
1198
resultRelInfo -> ri_RelationDesc = rel ;
1199
1199
resultRelInfo -> ri_TrigInstrument = NULL ;
1200
1200
1201
- #if PG_VERSION_NUM >=150000
1201
+ #if PG_VERSION_NUM >=140000
1202
1202
estate -> es_result_relations = (ResultRelInfo * * )palloc (sizeof (ResultRelInfo * ));
1203
1203
estate -> es_result_relations [0 ] = resultRelInfo ;
1204
1204
#else
@@ -1232,7 +1232,7 @@ static void insert_tuple(Datum* values, bool* nulls)
1232
1232
1233
1233
static void end_batch_insert ()
1234
1234
{
1235
- #if PG_VERSION_NUM >=150000
1235
+ #if PG_VERSION_NUM >=140000
1236
1236
ExecCloseIndices (estate -> es_result_relations [0 ]);
1237
1237
#else
1238
1238
ExecCloseIndices (estate -> es_result_relation_info );
@@ -3857,8 +3857,10 @@ vops_expression_tree_mutator(Node *node, void *context)
3857
3857
}
3858
3858
/* depth first traversal */
3859
3859
node = expression_tree_mutator (node , vops_expression_tree_mutator , context
3860
+ #if PG_VERSION_NUM < 140000
3860
3861
#ifdef QTW_DONT_COPY_DEFAULT
3861
3862
,0
3863
+ #endif
3862
3864
#endif
3863
3865
);
3864
3866
@@ -4267,7 +4269,11 @@ vops_add_literal_type_casts(Node* node, Const** consts)
4267
4269
else if (IsA (node , A_Const ))
4268
4270
{
4269
4271
A_Const * ac = (A_Const * )node ;
4272
+ #if PG_VERSION_NUM >= 150000
4273
+ if (ac -> val .sval .type == T_String && ac -> location >= 0 )
4274
+ #else
4270
4275
if (ac -> val .type == T_String && ac -> location >= 0 )
4276
+ #endif
4271
4277
{
4272
4278
Const * c = consts [ac -> location ];
4273
4279
if (c != NULL && c -> consttype != TEXTOID ) {
@@ -4447,7 +4453,15 @@ vops_substitute_tables_with_projections(char const* queryString, Query *query)
4447
4453
}
4448
4454
#if PG_VERSION_NUM >=100000
4449
4455
parsetree = linitial_node (RawStmt , parsetree_list );
4450
- select = (SelectStmt * )parsetree -> stmt ;
4456
+ #if PG_VERSION_NUM >=140000
4457
+ if (parsetree -> stmt -> type == T_ExplainStmt )
4458
+ {
4459
+ ExplainStmt * explain = (ExplainStmt * )parsetree -> stmt ;
4460
+ select = (SelectStmt * )explain -> query ;
4461
+ }
4462
+ else
4463
+ #endif
4464
+ select = (SelectStmt * )parsetree -> stmt ;
4451
4465
#else
4452
4466
parsetree = (Node * ) linitial (parsetree_list );
4453
4467
select = (SelectStmt * ) parsetree ;
@@ -4580,17 +4594,18 @@ vops_resolve_functions(void)
4580
4594
}
4581
4595
}
4582
4596
4583
- #if PG_VERSION_NUM >=150000
4597
+ #if PG_VERSION_NUM >=140000
4584
4598
static void vops_post_parse_analysis_hook (ParseState * pstate , Query * query , JumbleState * jstate )
4585
4599
#else
4586
4600
static void vops_post_parse_analysis_hook (ParseState * pstate , Query * query )
4587
4601
#endif
4588
4602
{
4589
4603
vops_var var ;
4604
+
4590
4605
/* Invoke original hook if needed */
4591
4606
if (post_parse_analyze_hook_next )
4592
4607
{
4593
- #if PG_VERSION_NUM >=150000
4608
+ #if PG_VERSION_NUM >=140000
4594
4609
post_parse_analyze_hook_next (pstate , query , jstate );
4595
4610
#else
4596
4611
post_parse_analyze_hook_next (pstate , query );
0 commit comments