Fix two issues with custom_query_jumble in gen_node_support.pl
authorMichael Paquier <michael@paquier.xyz>
Wed, 26 Mar 2025 00:06:36 +0000 (09:06 +0900)
committerMichael Paquier <michael@paquier.xyz>
Wed, 26 Mar 2025 00:06:36 +0000 (09:06 +0900)
A node field marked with custom_query_jumble and query_jumble_ignore
would generate some code of a custom routine.  The script is changed so
as custom_query_jumble behaves like the other options in this case,
query_jumble_ignore taking priority, with no code generated.

A comment related to the code generated for node types was misplaced.

Thinkos introduced in 5ac462e2b7ac.

Reported-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/1324036.1742945060@sss.pgh.pa.us

src/backend/nodes/gen_node_support.pl

index 40994b53fb28a2360fd8f705d57e30fe6c7a4ef0..f6229089cd15be313e6053d4065c210f905c89d1 100644 (file)
@@ -1309,16 +1309,16 @@ _jumble${n}(JumbleState *jstate, Node *node)
            }
        }
 
-       # node type
        if ($query_jumble_custom)
        {
            # Custom function that applies to one field of a node.
-           print $jff "\tJUMBLE_CUSTOM($n, $f);\n";
+           print $jff "\tJUMBLE_CUSTOM($n, $f);\n"
+             unless $query_jumble_ignore;
        }
        elsif (($t =~ /^(\w+)\*$/ or $t =~ /^struct\s+(\w+)\*$/)
            and elem $1, @node_types)
        {
-           # Squash constants if requested.
+           # Node type.  Squash constants if requested.
            if ($query_jumble_squash)
            {
                print $jff "\tJUMBLE_ELEMENTS($f);\n"