aboutsummaryrefslogtreecommitdiff
path: root/src/backend/nodes
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/nodes')
-rw-r--r--src/backend/nodes/copyfuncs.c17
-rw-r--r--src/backend/nodes/equalfuncs.c12
-rw-r--r--src/backend/nodes/outfuncs.c16
3 files changed, 45 insertions, 0 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index 71d53234bc3..f34f7049e43 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -1907,6 +1907,20 @@ _copySpecialJoinInfo(const SpecialJoinInfo *from)
}
/*
+ * _copyLateralJoinInfo
+ */
+static LateralJoinInfo *
+_copyLateralJoinInfo(const LateralJoinInfo *from)
+{
+ LateralJoinInfo *newnode = makeNode(LateralJoinInfo);
+
+ COPY_SCALAR_FIELD(lateral_rhs);
+ COPY_BITMAPSET_FIELD(lateral_lhs);
+
+ return newnode;
+}
+
+/*
* _copyAppendRelInfo
*/
static AppendRelInfo *
@@ -4082,6 +4096,9 @@ copyObject(const void *from)
case T_SpecialJoinInfo:
retval = _copySpecialJoinInfo(from);
break;
+ case T_LateralJoinInfo:
+ retval = _copyLateralJoinInfo(from);
+ break;
case T_AppendRelInfo:
retval = _copyAppendRelInfo(from);
break;
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c
index d690ca77a5a..b4b1c223363 100644
--- a/src/backend/nodes/equalfuncs.c
+++ b/src/backend/nodes/equalfuncs.c
@@ -863,6 +863,15 @@ _equalSpecialJoinInfo(const SpecialJoinInfo *a, const SpecialJoinInfo *b)
}
static bool
+_equalLateralJoinInfo(const LateralJoinInfo *a, const LateralJoinInfo *b)
+{
+ COMPARE_SCALAR_FIELD(lateral_rhs);
+ COMPARE_BITMAPSET_FIELD(lateral_lhs);
+
+ return true;
+}
+
+static bool
_equalAppendRelInfo(const AppendRelInfo *a, const AppendRelInfo *b)
{
COMPARE_SCALAR_FIELD(parent_relid);
@@ -2646,6 +2655,9 @@ equal(const void *a, const void *b)
case T_SpecialJoinInfo:
retval = _equalSpecialJoinInfo(a, b);
break;
+ case T_LateralJoinInfo:
+ retval = _equalLateralJoinInfo(a, b);
+ break;
case T_AppendRelInfo:
retval = _equalAppendRelInfo(a, b);
break;
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index 9dee0414f36..01f381e9bad 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -1699,6 +1699,7 @@ _outPlannerInfo(StringInfo str, const PlannerInfo *node)
WRITE_NODE_FIELD(right_join_clauses);
WRITE_NODE_FIELD(full_join_clauses);
WRITE_NODE_FIELD(join_info_list);
+ WRITE_NODE_FIELD(lateral_info_list);
WRITE_NODE_FIELD(append_rel_list);
WRITE_NODE_FIELD(rowMarks);
WRITE_NODE_FIELD(placeholder_list);
@@ -1713,6 +1714,7 @@ _outPlannerInfo(StringInfo str, const PlannerInfo *node)
WRITE_FLOAT_FIELD(limit_tuples, "%.0f");
WRITE_BOOL_FIELD(hasInheritedTarget);
WRITE_BOOL_FIELD(hasJoinRTEs);
+ WRITE_BOOL_FIELD(hasLateralRTEs);
WRITE_BOOL_FIELD(hasHavingQual);
WRITE_BOOL_FIELD(hasPseudoConstantQuals);
WRITE_BOOL_FIELD(hasRecursion);
@@ -1743,6 +1745,8 @@ _outRelOptInfo(StringInfo str, const RelOptInfo *node)
WRITE_ENUM_FIELD(rtekind, RTEKind);
WRITE_INT_FIELD(min_attr);
WRITE_INT_FIELD(max_attr);
+ WRITE_NODE_FIELD(lateral_vars);
+ WRITE_BITMAPSET_FIELD(lateral_relids);
WRITE_NODE_FIELD(indexlist);
WRITE_UINT_FIELD(pages);
WRITE_FLOAT_FIELD(tuples, "%.0f");
@@ -1891,6 +1895,15 @@ _outSpecialJoinInfo(StringInfo str, const SpecialJoinInfo *node)
}
static void
+_outLateralJoinInfo(StringInfo str, const LateralJoinInfo *node)
+{
+ WRITE_NODE_TYPE("LATERALJOININFO");
+
+ WRITE_UINT_FIELD(lateral_rhs);
+ WRITE_BITMAPSET_FIELD(lateral_lhs);
+}
+
+static void
_outAppendRelInfo(StringInfo str, const AppendRelInfo *node)
{
WRITE_NODE_TYPE("APPENDRELINFO");
@@ -3036,6 +3049,9 @@ _outNode(StringInfo str, const void *obj)
case T_SpecialJoinInfo:
_outSpecialJoinInfo(str, obj);
break;
+ case T_LateralJoinInfo:
+ _outLateralJoinInfo(str, obj);
+ break;
case T_AppendRelInfo:
_outAppendRelInfo(str, obj);
break;