1616
1717void extractClauseFromOpExpr (
1818#if PG_VERSION_NUM >= 140000
19- PlannerInfo * root ,
19+ PlannerInfo * root ,
2020#endif
21- Relids base_relids ,
22- OpExpr * node ,
23- List * * quals );
21+ Relids base_relids ,
22+ OpExpr * node ,
23+ List * * quals );
2424
2525void extractClauseFromNullTest (Relids base_relids ,
2626 NullTest * node ,
2727 List * * quals );
2828
2929void extractClauseFromScalarArrayOpExpr (
3030#if PG_VERSION_NUM >= 140000
31- PlannerInfo * root ,
31+ PlannerInfo * root ,
3232#endif
33- Relids base_relids ,
34- ScalarArrayOpExpr * node ,
35- List * * quals );
33+ Relids base_relids ,
34+ ScalarArrayOpExpr * node ,
35+ List * * quals );
3636
3737void extractClauseFromBooleanTest (Relids base_relids , BooleanTest * node , List * * quals );
3838
3939void extractClauseFromVar (
4040#if PG_VERSION_NUM >= 140000
41- PlannerInfo * root ,
41+ PlannerInfo * root ,
4242#endif
4343 Relids base_relids , Var * node , List * * quals );
4444
@@ -333,12 +333,12 @@ extractRestrictions(
333333 break ;
334334
335335 case T_Var :
336- extractClauseFromVar (
336+ extractClauseFromVar (
337337#if PG_VERSION_NUM >= 140000
338338 (PlannerInfo * ) root ,
339339#endif
340340 base_relids , (Var * ) node , quals );
341- break ;
341+ break ;
342342
343343 default :
344344 {
@@ -364,9 +364,9 @@ extractRestrictions(
364364void
365365extractClauseFromOpExpr (
366366#if PG_VERSION_NUM >= 140000
367- PlannerInfo * root ,
367+ PlannerInfo * root ,
368368#endif
369- Relids base_relids , OpExpr * op , List * * quals )
369+ Relids base_relids , OpExpr * op , List * * quals )
370370{
371371 Var * left ;
372372 Expr * right ;
@@ -399,11 +399,11 @@ extractClauseFromOpExpr(
399399void
400400extractClauseFromScalarArrayOpExpr (
401401#if PG_VERSION_NUM >= 140000
402- PlannerInfo * root ,
402+ PlannerInfo * root ,
403403#endif
404- Relids base_relids ,
405- ScalarArrayOpExpr * op ,
406- List * * quals )
404+ Relids base_relids ,
405+ ScalarArrayOpExpr * op ,
406+ List * * quals )
407407{
408408 Var * left ;
409409 Expr * right ;
@@ -417,9 +417,9 @@ extractClauseFromScalarArrayOpExpr(
417417 if (!(contain_volatile_functions ((Node * ) right ) ||
418418 bms_is_subset (base_relids , pull_varnos (
419419#if PG_VERSION_NUM >= 140000
420- root ,
420+ root ,
421421#endif
422- (Node * ) right ))))
422+ (Node * ) right ))))
423423
424424 {
425425 * quals = lappend (* quals , makeQual (left -> varattno ,
@@ -468,7 +468,7 @@ extractClauseFromNullTest(Relids base_relids,
468468}
469469
470470/*
471- * Convert a "BoolExpr " (IS TRUE, IS FALSE, IS NOT TRUE, IS NOT FALSE)
471+ * Convert a "BooleanTest " (IS TRUE, IS FALSE, IS NOT TRUE, IS NOT FALSE)
472472 * to the corresponding qualifier.
473473 */
474474void extractClauseFromBooleanTest (Relids base_relids , BooleanTest * node , List * * quals )
@@ -503,8 +503,15 @@ void extractClauseFromBooleanTest(Relids base_relids, BooleanTest *node, List **
503503 opname = "IS NOT" ;
504504 val = (Expr * ) makeConst (BOOLOID , -1 , InvalidOid , sizeof (bool ), BoolGetDatum (true), false, true);
505505 break ;
506+ case IS_UNKNOWN :
507+ opname = "IS" ;
508+ val = (Expr * ) makeConst (BOOLOID , -1 , InvalidOid , sizeof (bool ), (Datum )0 , true, true);
509+ break ;
510+ case IS_NOT_UNKNOWN :
511+ opname = "IS NOT" ;
512+ val = (Expr * ) makeConst (BOOLOID , -1 , InvalidOid , sizeof (bool ), (Datum )0 , true, true);
513+ break ;
506514 default :
507- /* IS UNKNOWN, IS NOT UNKNOWN */
508515 elog (ERROR , "unsupported boolean test type %d" , node -> booltesttype );
509516 }
510517 result = makeQual (var -> varattno , opname ,
@@ -515,18 +522,18 @@ void extractClauseFromBooleanTest(Relids base_relids, BooleanTest *node, List **
515522
516523void extractClauseFromVar (
517524#if PG_VERSION_NUM >= 140000
518- PlannerInfo * root ,
525+ PlannerInfo * root ,
519526#endif
520527 Relids base_relids , Var * var , List * * quals )
521528{
522529 MulticornBaseQual * result ;
523530 Expr * true_expr ;
524- if (!bms_is_subset (pull_varnos (
531+ if (!bms_is_subset (pull_varnos (
525532#if PG_VERSION_NUM >= 140000
526533 root ,
527534#endif
528535 (Node * ) var ), base_relids )) {
529- return ;
536+ return ;
530537 }
531538
532539 true_expr = (Expr * ) makeConst (BOOLOID , // Type OID for boolean
@@ -538,7 +545,7 @@ void extractClauseFromVar(
538545 true); // constbyval
539546
540547 result = makeQual (var -> varattno , "=" , true_expr , false, false);
541- * quals = lappend (* quals , result );
548+ * quals = lappend (* quals , result );
542549}
543550
544551/*
@@ -577,21 +584,21 @@ makeQual(AttrNumber varattno, char *opname, Expr *value, bool isarray,
577584 switch (value -> type )
578585 {
579586 case T_Const :
580- elog (DEBUG3 , "T_Const" );
587+ elog (DEBUG3 , "T_Const" );
581588 qual = palloc0 (sizeof (MulticornConstQual ));
582589 qual -> right_type = T_Const ;
583590 qual -> typeoid = ((Const * ) value )-> consttype ;
584591 ((MulticornConstQual * ) qual )-> value = ((Const * ) value )-> constvalue ;
585592 ((MulticornConstQual * ) qual )-> isnull = ((Const * ) value )-> constisnull ;
586593 break ;
587594 case T_Var :
588- elog (DEBUG3 , "T_Var" );
595+ elog (DEBUG3 , "T_Var" );
589596 qual = palloc0 (sizeof (MulticornVarQual ));
590597 qual -> right_type = T_Var ;
591598 ((MulticornVarQual * ) qual )-> rightvarattno = ((Var * ) value )-> varattno ;
592599 break ;
593600 default :
594- elog (DEBUG3 , "default" );
601+ elog (DEBUG3 , "default" );
595602 qual = palloc0 (sizeof (MulticornParamQual ));
596603 qual -> right_type = T_Param ;
597604 ((MulticornParamQual * ) qual )-> expr = value ;
0 commit comments