pg_query 5.1.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -0
- data/README.md +1 -1
- data/Rakefile +2 -2
- data/ext/pg_query/include/pg_query.h +4 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
- data/ext/pg_query/include/postgres/access/amapi.h +10 -3
- data/ext/pg_query/include/postgres/access/attmap.h +1 -1
- data/ext/pg_query/include/postgres/access/attnum.h +1 -1
- data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
- data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
- data/ext/pg_query/include/postgres/access/clog.h +2 -3
- data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
- data/ext/pg_query/include/postgres/access/detoast.h +1 -1
- data/ext/pg_query/include/postgres/access/genam.h +8 -4
- data/ext/pg_query/include/postgres/access/gin.h +1 -1
- data/ext/pg_query/include/postgres/access/htup.h +1 -1
- data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
- data/ext/pg_query/include/postgres/access/itup.h +3 -3
- data/ext/pg_query/include/postgres/access/parallel.h +1 -2
- data/ext/pg_query/include/postgres/access/printtup.h +1 -1
- data/ext/pg_query/include/postgres/access/relation.h +1 -1
- data/ext/pg_query/include/postgres/access/relscan.h +1 -1
- data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
- data/ext/pg_query/include/postgres/access/sdir.h +1 -1
- data/ext/pg_query/include/postgres/access/skey.h +1 -1
- data/ext/pg_query/include/postgres/access/slru.h +221 -0
- data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
- data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
- data/ext/pg_query/include/postgres/access/table.h +1 -1
- data/ext/pg_query/include/postgres/access/tableam.h +33 -24
- data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
- data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
- data/ext/pg_query/include/postgres/access/transam.h +7 -7
- data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
- data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
- data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
- data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
- data/ext/pg_query/include/postgres/access/twophase.h +2 -2
- data/ext/pg_query/include/postgres/access/xact.h +5 -5
- data/ext/pg_query/include/postgres/access/xlog.h +20 -12
- data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
- data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
- data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
- data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
- data/ext/pg_query/include/postgres/c.h +31 -36
- data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
- data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
- data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
- data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
- data/ext/pg_query/include/postgres/catalog/index.h +22 -18
- data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
- data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
- data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
- data/ext/pg_query/include/postgres/catalog/objectaddress.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
- data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
- data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
- data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
- data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
- data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
- data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
- data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
- data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
- data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
- data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
- data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
- data/ext/pg_query/include/postgres/commands/async.h +2 -6
- data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
- data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
- data/ext/pg_query/include/postgres/commands/event_trigger.h +5 -2
- data/ext/pg_query/include/postgres/commands/explain.h +19 -3
- data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
- data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
- data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
- data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
- data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
- data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
- data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
- data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
- data/ext/pg_query/include/postgres/common/hashfn_unstable.h +453 -0
- data/ext/pg_query/include/postgres/common/int.h +79 -4
- data/ext/pg_query/include/postgres/common/keywords.h +1 -1
- data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
- data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
- data/ext/pg_query/include/postgres/common/relpath.h +4 -4
- data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
- data/ext/pg_query/include/postgres/common/sha2.h +1 -1
- data/ext/pg_query/include/postgres/common/string.h +1 -1
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/datatype/timestamp.h +28 -2
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/executor/execdesc.h +1 -1
- data/ext/pg_query/include/postgres/executor/executor.h +6 -5
- data/ext/pg_query/include/postgres/executor/functions.h +2 -1
- data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
- data/ext/pg_query/include/postgres/executor/spi.h +2 -8
- data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
- data/ext/pg_query/include/postgres/fmgr.h +2 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
- data/ext/pg_query/include/postgres/funcapi.h +2 -2
- data/ext/pg_query/include/postgres/gram.h +871 -830
- data/ext/pg_query/include/postgres/gramparse.h +1 -1
- data/ext/pg_query/include/postgres/jit/jit.h +4 -3
- data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
- data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
- data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
- data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
- data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
- data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
- data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
- data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
- data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
- data/ext/pg_query/include/postgres/libpq/libpq-be.h +29 -25
- data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
- data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
- data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
- data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
- data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
- data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
- data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
- data/ext/pg_query/include/postgres/mb/pg_wchar.h +102 -82
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/postgres/miscadmin.h +64 -52
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
- data/ext/pg_query/include/postgres/nodes/execnodes.h +109 -25
- data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
- data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
- data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
- data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
- data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
- data/ext/pg_query/include/postgres/nodes/params.h +1 -1
- data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
- data/ext/pg_query/include/postgres/nodes/pathnodes.h +60 -9
- data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
- data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
- data/ext/pg_query/include/postgres/nodes/primnodes.h +344 -50
- data/ext/pg_query/include/postgres/nodes/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
- data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/postgres/nodes/value.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
- data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
- data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
- data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
- data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
- data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
- data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_coerce.h +2 -2
- data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
- data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
- data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
- data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
- data/ext/pg_query/include/postgres/parser/parser.h +3 -3
- data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
- data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
- data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
- data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/postgres/pg_config.h +34 -34
- data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
- data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
- data/ext/pg_query/include/postgres/pg_trace.h +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +13 -11
- data/ext/pg_query/include/postgres/pgtime.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
- data/ext/pg_query/include/postgres/plpgsql.h +15 -13
- data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
- data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
- data/ext/pg_query/include/postgres/port/atomics.h +93 -6
- data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
- data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
- data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
- data/ext/pg_query/include/postgres/port/simd.h +48 -1
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +1 -11
- data/ext/pg_query/include/postgres/port.h +7 -3
- data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres/postgres.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
- data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
- data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
- data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
- data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
- data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
- data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
- data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
- data/ext/pg_query/include/postgres/regex/regex.h +92 -9
- data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
- data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
- data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
- data/ext/pg_query/include/postgres/replication/origin.h +1 -1
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +18 -28
- data/ext/pg_query/include/postgres/replication/slot.h +41 -5
- data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
- data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
- data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
- data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
- data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
- data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/postgres/storage/block.h +1 -1
- data/ext/pg_query/include/postgres/storage/buf.h +1 -1
- data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
- data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
- data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
- data/ext/pg_query/include/postgres/storage/fd.h +30 -13
- data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
- data/ext/pg_query/include/postgres/storage/item.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
- data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
- data/ext/pg_query/include/postgres/storage/latch.h +4 -2
- data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
- data/ext/pg_query/include/postgres/storage/lock.h +19 -19
- data/ext/pg_query/include/postgres/storage/lockdefs.h +1 -1
- data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
- data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
- data/ext/pg_query/include/postgres/storage/off.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
- data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
- data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
- data/ext/pg_query/include/postgres/storage/proc.h +48 -23
- data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
- data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
- data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
- data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
- data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
- data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
- data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
- data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
- data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
- data/ext/pg_query/include/postgres/storage/smgr.h +41 -27
- data/ext/pg_query/include/postgres/storage/spin.h +1 -1
- data/ext/pg_query/include/postgres/storage/standby.h +13 -3
- data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/postgres/storage/sync.h +4 -4
- data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
- data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
- data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
- data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
- data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
- data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
- data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
- data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
- data/ext/pg_query/include/postgres/utils/acl.h +19 -7
- data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/postgres/utils/array.h +1 -2
- data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
- data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
- data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
- data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
- data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
- data/ext/pg_query/include/postgres/utils/catcache.h +5 -6
- data/ext/pg_query/include/postgres/utils/date.h +1 -1
- data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
- data/ext/pg_query/include/postgres/utils/datum.h +1 -1
- data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
- data/ext/pg_query/include/postgres/utils/elog.h +3 -8
- data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
- data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/postgres/utils/float.h +1 -1
- data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
- data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
- data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
- data/ext/pg_query/include/postgres/utils/guc.h +20 -6
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
- data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
- data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
- data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
- data/ext/pg_query/include/postgres/utils/inval.h +1 -1
- data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
- data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
- data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
- data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
- data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
- data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
- data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
- data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +11 -17
- data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
- data/ext/pg_query/include/postgres/utils/portal.h +9 -9
- data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
- data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
- data/ext/pg_query/include/postgres/utils/rel.h +14 -15
- data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
- data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
- data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
- data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
- data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
- data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
- data/ext/pg_query/include/postgres/utils/syscache.h +2 -98
- data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
- data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
- data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
- data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
- data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
- data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
- data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
- data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
- data/ext/pg_query/include/postgres/utils/xml.h +4 -4
- data/ext/pg_query/include/postgres/varatt.h +1 -1
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
- data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
- data/ext/pg_query/pg_query.pb-c.c +6598 -3739
- data/ext/pg_query/pg_query_normalize.c +42 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
- data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -1
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/postgres_deparse.c +409 -21
- data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
- data/ext/pg_query/src_backend_commands_define.c +2 -3
- data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +3 -7
- data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +34490 -32135
- data/ext/pg_query/src_backend_parser_parser.c +8 -8
- data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
- data/ext/pg_query/src_backend_parser_scansup.c +2 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
- data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
- data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
- data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
- data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
- data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
- data/ext/pg_query/src_common_encnames.c +43 -44
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +511 -466
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +3 -3
- data/ext/pg_query/src_common_stringinfo.c +18 -1
- data/ext/pg_query/src_common_wchar.c +45 -108
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_port_pg_bitutils.c +173 -28
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +1 -1
- data/ext/pg_query/src_port_strerror.c +1 -3
- data/ext/pg_query/src_port_strlcpy.c +1 -1
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +26 -3
- data/lib/pg_query/treewalker.rb +38 -11
- data/lib/pg_query/truncate.rb +1 -1
- data/lib/pg_query/version.rb +1 -1
- metadata +25 -11
- data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
- data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
- data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* empty set by a NULL pointer.
|
|
10
10
|
*
|
|
11
11
|
*
|
|
12
|
-
* Copyright (c) 2003-
|
|
12
|
+
* Copyright (c) 2003-2024, PostgreSQL Global Development Group
|
|
13
13
|
*
|
|
14
14
|
* src/include/nodes/bitmapset.h
|
|
15
15
|
*
|
|
@@ -62,7 +62,7 @@ typedef enum
|
|
|
62
62
|
BMS_EQUAL, /* sets are equal */
|
|
63
63
|
BMS_SUBSET1, /* first set is a subset of the second */
|
|
64
64
|
BMS_SUBSET2, /* second set is a subset of the first */
|
|
65
|
-
BMS_DIFFERENT /* neither set is a subset of the other */
|
|
65
|
+
BMS_DIFFERENT, /* neither set is a subset of the other */
|
|
66
66
|
} BMS_Comparison;
|
|
67
67
|
|
|
68
68
|
/* result of bms_membership */
|
|
@@ -70,9 +70,22 @@ typedef enum
|
|
|
70
70
|
{
|
|
71
71
|
BMS_EMPTY_SET, /* 0 members */
|
|
72
72
|
BMS_SINGLETON, /* 1 member */
|
|
73
|
-
BMS_MULTIPLE /* >1 member */
|
|
73
|
+
BMS_MULTIPLE, /* >1 member */
|
|
74
74
|
} BMS_Membership;
|
|
75
75
|
|
|
76
|
+
/* Select appropriate bit-twiddling functions for bitmap word size */
|
|
77
|
+
#if BITS_PER_BITMAPWORD == 32
|
|
78
|
+
#define bmw_leftmost_one_pos(w) pg_leftmost_one_pos32(w)
|
|
79
|
+
#define bmw_rightmost_one_pos(w) pg_rightmost_one_pos32(w)
|
|
80
|
+
#define bmw_popcount(w) pg_popcount32(w)
|
|
81
|
+
#elif BITS_PER_BITMAPWORD == 64
|
|
82
|
+
#define bmw_leftmost_one_pos(w) pg_leftmost_one_pos64(w)
|
|
83
|
+
#define bmw_rightmost_one_pos(w) pg_rightmost_one_pos64(w)
|
|
84
|
+
#define bmw_popcount(w) pg_popcount64(w)
|
|
85
|
+
#else
|
|
86
|
+
#error "invalid BITS_PER_BITMAPWORD"
|
|
87
|
+
#endif
|
|
88
|
+
|
|
76
89
|
|
|
77
90
|
/*
|
|
78
91
|
* function prototypes in nodes/bitmapset.c
|
|
@@ -109,6 +122,7 @@ extern BMS_Membership bms_membership(const Bitmapset *a);
|
|
|
109
122
|
extern Bitmapset *bms_add_member(Bitmapset *a, int x);
|
|
110
123
|
extern Bitmapset *bms_del_member(Bitmapset *a, int x);
|
|
111
124
|
extern Bitmapset *bms_add_members(Bitmapset *a, const Bitmapset *b);
|
|
125
|
+
extern Bitmapset *bms_replace_members(Bitmapset *a, const Bitmapset *b);
|
|
112
126
|
extern Bitmapset *bms_add_range(Bitmapset *a, int lower, int upper);
|
|
113
127
|
extern Bitmapset *bms_int_members(Bitmapset *a, const Bitmapset *b);
|
|
114
128
|
extern Bitmapset *bms_del_members(Bitmapset *a, const Bitmapset *b);
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* not provided.
|
|
20
20
|
*
|
|
21
21
|
*
|
|
22
|
-
* Portions Copyright (c) 1996-
|
|
22
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
23
23
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
24
24
|
*
|
|
25
25
|
* src/include/nodes/execnodes.h
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
#include "fmgr.h"
|
|
35
35
|
#include "lib/ilist.h"
|
|
36
36
|
#include "lib/pairingheap.h"
|
|
37
|
+
#include "nodes/miscnodes.h"
|
|
37
38
|
#include "nodes/params.h"
|
|
38
39
|
#include "nodes/plannodes.h"
|
|
39
40
|
#include "nodes/tidbitmap.h"
|
|
@@ -129,6 +130,14 @@ typedef struct ExprState
|
|
|
129
130
|
|
|
130
131
|
Datum *innermost_domainval;
|
|
131
132
|
bool *innermost_domainnull;
|
|
133
|
+
|
|
134
|
+
/*
|
|
135
|
+
* For expression nodes that support soft errors. Should be set to NULL if
|
|
136
|
+
* the caller wants errors to be thrown. Callers that do not want errors
|
|
137
|
+
* thrown should set it to a valid ErrorSaveContext before calling
|
|
138
|
+
* ExecInitExprRec().
|
|
139
|
+
*/
|
|
140
|
+
ErrorSaveContext *escontext;
|
|
132
141
|
} ExprState;
|
|
133
142
|
|
|
134
143
|
|
|
@@ -187,7 +196,6 @@ typedef struct IndexInfo
|
|
|
187
196
|
Oid *ii_UniqueOps; /* array with one entry per column */
|
|
188
197
|
Oid *ii_UniqueProcs; /* array with one entry per column */
|
|
189
198
|
uint16 *ii_UniqueStrats; /* array with one entry per column */
|
|
190
|
-
Datum *ii_OpclassOptions; /* array with one entry per column */
|
|
191
199
|
bool ii_Unique;
|
|
192
200
|
bool ii_NullsNotDistinct;
|
|
193
201
|
bool ii_ReadyForInserts;
|
|
@@ -296,7 +304,7 @@ typedef enum
|
|
|
296
304
|
{
|
|
297
305
|
ExprSingleResult, /* expression does not return a set */
|
|
298
306
|
ExprMultipleResult, /* this result is an element of a set */
|
|
299
|
-
ExprEndResult /* there are no more elements in the set */
|
|
307
|
+
ExprEndResult, /* there are no more elements in the set */
|
|
300
308
|
} ExprDoneCond;
|
|
301
309
|
|
|
302
310
|
/*
|
|
@@ -310,7 +318,7 @@ typedef enum
|
|
|
310
318
|
SFRM_ValuePerCall = 0x01, /* one value returned per call */
|
|
311
319
|
SFRM_Materialize = 0x02, /* result set instantiated in Tuplestore */
|
|
312
320
|
SFRM_Materialize_Random = 0x04, /* Tuplestore needs randomAccess */
|
|
313
|
-
SFRM_Materialize_Preferred = 0x08 /* caller prefers Tuplestore */
|
|
321
|
+
SFRM_Materialize_Preferred = 0x08, /* caller prefers Tuplestore */
|
|
314
322
|
} SetFunctionReturnMode;
|
|
315
323
|
|
|
316
324
|
/*
|
|
@@ -538,9 +546,11 @@ typedef struct ResultRelInfo
|
|
|
538
546
|
/* ON CONFLICT evaluation state */
|
|
539
547
|
OnConflictSetState *ri_onConflict;
|
|
540
548
|
|
|
541
|
-
/* for MERGE, lists of MergeActionState */
|
|
542
|
-
List *
|
|
543
|
-
|
|
549
|
+
/* for MERGE, lists of MergeActionState (one per MergeMatchKind) */
|
|
550
|
+
List *ri_MergeActions[NUM_MERGE_MATCH_KINDS];
|
|
551
|
+
|
|
552
|
+
/* for MERGE, expr state for checking the join condition */
|
|
553
|
+
ExprState *ri_MergeJoinCondition;
|
|
544
554
|
|
|
545
555
|
/* partition check expression state (NULL if not set up yet) */
|
|
546
556
|
ExprState *ri_PartitionCheckExpr;
|
|
@@ -990,7 +1000,7 @@ typedef struct SubPlanState
|
|
|
990
1000
|
typedef enum DomainConstraintType
|
|
991
1001
|
{
|
|
992
1002
|
DOM_CONSTRAINT_NOTNULL,
|
|
993
|
-
DOM_CONSTRAINT_CHECK
|
|
1003
|
+
DOM_CONSTRAINT_CHECK,
|
|
994
1004
|
} DomainConstraintType;
|
|
995
1005
|
|
|
996
1006
|
typedef struct DomainConstraintState
|
|
@@ -1002,6 +1012,77 @@ typedef struct DomainConstraintState
|
|
|
1002
1012
|
ExprState *check_exprstate; /* check_expr's eval state, or NULL */
|
|
1003
1013
|
} DomainConstraintState;
|
|
1004
1014
|
|
|
1015
|
+
/*
|
|
1016
|
+
* State for JsonExpr evaluation, too big to inline.
|
|
1017
|
+
*
|
|
1018
|
+
* This contains the information going into and coming out of the
|
|
1019
|
+
* EEOP_JSONEXPR_PATH eval step.
|
|
1020
|
+
*/
|
|
1021
|
+
typedef struct JsonExprState
|
|
1022
|
+
{
|
|
1023
|
+
/* original expression node */
|
|
1024
|
+
JsonExpr *jsexpr;
|
|
1025
|
+
|
|
1026
|
+
/* value/isnull for formatted_expr */
|
|
1027
|
+
NullableDatum formatted_expr;
|
|
1028
|
+
|
|
1029
|
+
/* value/isnull for pathspec */
|
|
1030
|
+
NullableDatum pathspec;
|
|
1031
|
+
|
|
1032
|
+
/* JsonPathVariable entries for passing_values */
|
|
1033
|
+
List *args;
|
|
1034
|
+
|
|
1035
|
+
/*
|
|
1036
|
+
* Output variables that drive the EEOP_JUMP_IF_NOT_TRUE steps that are
|
|
1037
|
+
* added for ON ERROR and ON EMPTY expressions, if any.
|
|
1038
|
+
*
|
|
1039
|
+
* Reset for each evaluation of EEOP_JSONEXPR_PATH.
|
|
1040
|
+
*/
|
|
1041
|
+
|
|
1042
|
+
/* Set to true if jsonpath evaluation cause an error. */
|
|
1043
|
+
NullableDatum error;
|
|
1044
|
+
|
|
1045
|
+
/* Set to true if the jsonpath evaluation returned 0 items. */
|
|
1046
|
+
NullableDatum empty;
|
|
1047
|
+
|
|
1048
|
+
/*
|
|
1049
|
+
* Addresses of steps that implement the non-ERROR variant of ON EMPTY and
|
|
1050
|
+
* ON ERROR behaviors, respectively.
|
|
1051
|
+
*/
|
|
1052
|
+
int jump_empty;
|
|
1053
|
+
int jump_error;
|
|
1054
|
+
|
|
1055
|
+
/*
|
|
1056
|
+
* Address of the step to coerce the result value of jsonpath evaluation
|
|
1057
|
+
* to the RETURNING type. -1 if no coercion if JsonExpr.use_io_coercion
|
|
1058
|
+
* is true.
|
|
1059
|
+
*/
|
|
1060
|
+
int jump_eval_coercion;
|
|
1061
|
+
|
|
1062
|
+
/*
|
|
1063
|
+
* Address to jump to when skipping all the steps after performing
|
|
1064
|
+
* ExecEvalJsonExprPath() so as to return whatever the JsonPath* function
|
|
1065
|
+
* returned as is, that is, in the cases where there's no error and no
|
|
1066
|
+
* coercion is necessary.
|
|
1067
|
+
*/
|
|
1068
|
+
int jump_end;
|
|
1069
|
+
|
|
1070
|
+
/*
|
|
1071
|
+
* RETURNING type input function invocation info when
|
|
1072
|
+
* JsonExpr.use_io_coercion is true.
|
|
1073
|
+
*/
|
|
1074
|
+
FunctionCallInfo input_fcinfo;
|
|
1075
|
+
|
|
1076
|
+
/*
|
|
1077
|
+
* For error-safe evaluation of coercions. When the ON ERROR behavior is
|
|
1078
|
+
* not ERROR, a pointer to this is passed to ExecInitExprRec() when
|
|
1079
|
+
* initializing the coercion expressions or to ExecInitJsonCoercion().
|
|
1080
|
+
*
|
|
1081
|
+
* Reset for each evaluation of EEOP_JSONEXPR_PATH.
|
|
1082
|
+
*/
|
|
1083
|
+
ErrorSaveContext escontext;
|
|
1084
|
+
} JsonExprState;
|
|
1085
|
+
|
|
1005
1086
|
|
|
1006
1087
|
/* ----------------------------------------------------------------
|
|
1007
1088
|
* Executor State Trees
|
|
@@ -1319,6 +1400,16 @@ typedef struct ModifyTableState
|
|
|
1319
1400
|
/* Flags showing which subcommands are present INS/UPD/DEL/DO NOTHING */
|
|
1320
1401
|
int mt_merge_subcommands;
|
|
1321
1402
|
|
|
1403
|
+
/* For MERGE, the action currently being executed */
|
|
1404
|
+
MergeActionState *mt_merge_action;
|
|
1405
|
+
|
|
1406
|
+
/*
|
|
1407
|
+
* For MERGE, if there is a pending NOT MATCHED [BY TARGET] action to be
|
|
1408
|
+
* performed, this will be the last tuple read from the subplan; otherwise
|
|
1409
|
+
* it will be NULL --- see the comments in ExecMerge().
|
|
1410
|
+
*/
|
|
1411
|
+
TupleTableSlot *mt_merge_pending_not_matched;
|
|
1412
|
+
|
|
1322
1413
|
/* tuple counters for MERGE */
|
|
1323
1414
|
double mt_merge_inserted;
|
|
1324
1415
|
double mt_merge_updated;
|
|
@@ -1600,6 +1691,8 @@ typedef struct IndexScanState
|
|
|
1600
1691
|
* TableSlot slot for holding tuples fetched from the table
|
|
1601
1692
|
* VMBuffer buffer in use for visibility map testing, if any
|
|
1602
1693
|
* PscanLen size of parallel index-only scan descriptor
|
|
1694
|
+
* NameCStringAttNums attnums of name typed columns to pad to NAMEDATALEN
|
|
1695
|
+
* NameCStringCount number of elements in the NameCStringAttNums array
|
|
1603
1696
|
* ----------------
|
|
1604
1697
|
*/
|
|
1605
1698
|
typedef struct IndexOnlyScanState
|
|
@@ -1619,6 +1712,8 @@ typedef struct IndexOnlyScanState
|
|
|
1619
1712
|
TupleTableSlot *ioss_TableSlot;
|
|
1620
1713
|
Buffer ioss_VMBuffer;
|
|
1621
1714
|
Size ioss_PscanLen;
|
|
1715
|
+
AttrNumber *ioss_NameCStringAttNums;
|
|
1716
|
+
int ioss_NameCStringCount;
|
|
1622
1717
|
} IndexOnlyScanState;
|
|
1623
1718
|
|
|
1624
1719
|
/* ----------------
|
|
@@ -1670,7 +1765,7 @@ typedef enum
|
|
|
1670
1765
|
{
|
|
1671
1766
|
BM_INITIAL,
|
|
1672
1767
|
BM_INPROGRESS,
|
|
1673
|
-
BM_FINISHED
|
|
1768
|
+
BM_FINISHED,
|
|
1674
1769
|
} SharedBitmapState;
|
|
1675
1770
|
|
|
1676
1771
|
/* ----------------
|
|
@@ -1683,7 +1778,6 @@ typedef enum
|
|
|
1683
1778
|
* prefetch_target current target prefetch distance
|
|
1684
1779
|
* state current state of the TIDBitmap
|
|
1685
1780
|
* cv conditional wait variable
|
|
1686
|
-
* phs_snapshot_data snapshot data shared to workers
|
|
1687
1781
|
* ----------------
|
|
1688
1782
|
*/
|
|
1689
1783
|
typedef struct ParallelBitmapHeapState
|
|
@@ -1695,7 +1789,6 @@ typedef struct ParallelBitmapHeapState
|
|
|
1695
1789
|
int prefetch_target;
|
|
1696
1790
|
SharedBitmapState state;
|
|
1697
1791
|
ConditionVariable cv;
|
|
1698
|
-
char phs_snapshot_data[FLEXIBLE_ARRAY_MEMBER];
|
|
1699
1792
|
} ParallelBitmapHeapState;
|
|
1700
1793
|
|
|
1701
1794
|
/* ----------------
|
|
@@ -1705,17 +1798,13 @@ typedef struct ParallelBitmapHeapState
|
|
|
1705
1798
|
* tbm bitmap obtained from child index scan(s)
|
|
1706
1799
|
* tbmiterator iterator for scanning current pages
|
|
1707
1800
|
* tbmres current-page data
|
|
1708
|
-
*
|
|
1709
|
-
* return_empty_tuples number of empty tuples to return
|
|
1710
|
-
* vmbuffer buffer for visibility-map lookups
|
|
1711
|
-
* pvmbuffer ditto, for prefetched pages
|
|
1801
|
+
* pvmbuffer buffer for visibility-map lookups of prefetched pages
|
|
1712
1802
|
* exact_pages total number of exact pages retrieved
|
|
1713
1803
|
* lossy_pages total number of lossy pages retrieved
|
|
1714
1804
|
* prefetch_iterator iterator for prefetching ahead of current page
|
|
1715
1805
|
* prefetch_pages # pages prefetch iterator is ahead of current
|
|
1716
1806
|
* prefetch_target current target prefetch distance
|
|
1717
1807
|
* prefetch_maximum maximum value for prefetch_target
|
|
1718
|
-
* pscan_len size of the shared memory for parallel bitmap
|
|
1719
1808
|
* initialized is node is ready to iterate
|
|
1720
1809
|
* shared_tbmiterator shared iterator
|
|
1721
1810
|
* shared_prefetch_iterator shared iterator for prefetching
|
|
@@ -1729,9 +1818,6 @@ typedef struct BitmapHeapScanState
|
|
|
1729
1818
|
TIDBitmap *tbm;
|
|
1730
1819
|
TBMIterator *tbmiterator;
|
|
1731
1820
|
TBMIterateResult *tbmres;
|
|
1732
|
-
bool can_skip_fetch;
|
|
1733
|
-
int return_empty_tuples;
|
|
1734
|
-
Buffer vmbuffer;
|
|
1735
1821
|
Buffer pvmbuffer;
|
|
1736
1822
|
long exact_pages;
|
|
1737
1823
|
long lossy_pages;
|
|
@@ -1739,7 +1825,6 @@ typedef struct BitmapHeapScanState
|
|
|
1739
1825
|
int prefetch_pages;
|
|
1740
1826
|
int prefetch_target;
|
|
1741
1827
|
int prefetch_maximum;
|
|
1742
|
-
Size pscan_len;
|
|
1743
1828
|
bool initialized;
|
|
1744
1829
|
TBMSharedIterator *shared_tbmiterator;
|
|
1745
1830
|
TBMSharedIterator *shared_prefetch_iterator;
|
|
@@ -1754,7 +1839,6 @@ typedef struct BitmapHeapScanState
|
|
|
1754
1839
|
* NumTids number of tids in this scan
|
|
1755
1840
|
* TidPtr index of currently fetched tid
|
|
1756
1841
|
* TidList evaluated item pointers (array of size NumTids)
|
|
1757
|
-
* htup currently-fetched tuple, if any
|
|
1758
1842
|
* ----------------
|
|
1759
1843
|
*/
|
|
1760
1844
|
typedef struct TidScanState
|
|
@@ -1765,7 +1849,6 @@ typedef struct TidScanState
|
|
|
1765
1849
|
int tss_NumTids;
|
|
1766
1850
|
int tss_TidPtr;
|
|
1767
1851
|
ItemPointerData *tss_TidList;
|
|
1768
|
-
HeapTupleData tss_htup;
|
|
1769
1852
|
} TidScanState;
|
|
1770
1853
|
|
|
1771
1854
|
/* ----------------
|
|
@@ -1876,6 +1959,8 @@ typedef struct TableFuncScanState
|
|
|
1876
1959
|
ExprState *rowexpr; /* state for row-generating expression */
|
|
1877
1960
|
List *colexprs; /* state for column-generating expression */
|
|
1878
1961
|
List *coldefexprs; /* state for column default expressions */
|
|
1962
|
+
List *colvalexprs; /* state for column value expressions */
|
|
1963
|
+
List *passingvalexprs; /* state for PASSING argument expressions */
|
|
1879
1964
|
List *ns_names; /* same as TableFunc.ns_names */
|
|
1880
1965
|
List *ns_uris; /* list of states of namespace URI exprs */
|
|
1881
1966
|
Bitmapset *notnulls; /* nullability flag for each output column */
|
|
@@ -2447,7 +2532,6 @@ typedef struct AggState
|
|
|
2447
2532
|
#define FIELDNO_AGGSTATE_ALL_PERGROUPS 53
|
|
2448
2533
|
AggStatePerGroup *all_pergroups; /* array of first ->pergroups, than
|
|
2449
2534
|
* ->hash_pergroup */
|
|
2450
|
-
ProjectionInfo *combinedproj; /* projection machinery */
|
|
2451
2535
|
SharedAggInfo *shared_info; /* one entry per worker */
|
|
2452
2536
|
} AggState;
|
|
2453
2537
|
|
|
@@ -2467,7 +2551,7 @@ typedef enum WindowAggStatus
|
|
|
2467
2551
|
WINDOWAGG_DONE, /* No more processing to do */
|
|
2468
2552
|
WINDOWAGG_RUN, /* Normal processing of window funcs */
|
|
2469
2553
|
WINDOWAGG_PASSTHROUGH, /* Don't eval window funcs */
|
|
2470
|
-
WINDOWAGG_PASSTHROUGH_STRICT /* Pass-through plus don't store new
|
|
2554
|
+
WINDOWAGG_PASSTHROUGH_STRICT, /* Pass-through plus don't store new
|
|
2471
2555
|
* tuples during spool */
|
|
2472
2556
|
} WindowAggStatus;
|
|
2473
2557
|
|
|
@@ -2745,7 +2829,7 @@ typedef enum
|
|
|
2745
2829
|
LIMIT_WINDOWEND_TIES, /* have returned a tied row */
|
|
2746
2830
|
LIMIT_SUBPLANEOF, /* at EOF of subplan (within window) */
|
|
2747
2831
|
LIMIT_WINDOWEND, /* stepped off end of window */
|
|
2748
|
-
LIMIT_WINDOWSTART /* stepped off beginning of window */
|
|
2832
|
+
LIMIT_WINDOWSTART, /* stepped off beginning of window */
|
|
2749
2833
|
} LimitStateCond;
|
|
2750
2834
|
|
|
2751
2835
|
typedef struct LimitState
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Definitions for extensible nodes and custom scans
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/nodes/extensible.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Common header for some locking-related declarations.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Copyright (c) 2014-
|
|
7
|
+
* Copyright (c) 2014-2024, PostgreSQL Global Development Group
|
|
8
8
|
*
|
|
9
9
|
* src/include/nodes/lockoptions.h
|
|
10
10
|
*
|
|
@@ -24,7 +24,7 @@ typedef enum LockClauseStrength
|
|
|
24
24
|
LCS_FORKEYSHARE, /* FOR KEY SHARE */
|
|
25
25
|
LCS_FORSHARE, /* FOR SHARE */
|
|
26
26
|
LCS_FORNOKEYUPDATE, /* FOR NO KEY UPDATE */
|
|
27
|
-
LCS_FORUPDATE /* FOR UPDATE */
|
|
27
|
+
LCS_FORUPDATE, /* FOR UPDATE */
|
|
28
28
|
} LockClauseStrength;
|
|
29
29
|
|
|
30
30
|
/*
|
|
@@ -40,7 +40,7 @@ typedef enum LockWaitPolicy
|
|
|
40
40
|
/* Skip rows that can't be locked (SKIP LOCKED) */
|
|
41
41
|
LockWaitSkip,
|
|
42
42
|
/* Raise an error if a row cannot be locked (NOWAIT) */
|
|
43
|
-
LockWaitError
|
|
43
|
+
LockWaitError,
|
|
44
44
|
} LockWaitPolicy;
|
|
45
45
|
|
|
46
46
|
/*
|
|
@@ -55,7 +55,7 @@ typedef enum LockTupleMode
|
|
|
55
55
|
/* SELECT FOR NO KEY UPDATE, and UPDATEs that don't modify key columns */
|
|
56
56
|
LockTupleNoKeyExclusive,
|
|
57
57
|
/* SELECT FOR UPDATE, UPDATEs that modify key columns, and DELETE */
|
|
58
|
-
LockTupleExclusive
|
|
58
|
+
LockTupleExclusive,
|
|
59
59
|
} LockTupleMode;
|
|
60
60
|
|
|
61
61
|
#endif /* LOCKOPTIONS_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* prototypes for the creator functions of various nodes
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/nodes/makefuncs.h
|
|
@@ -100,6 +100,7 @@ extern IndexInfo *makeIndexInfo(int numattrs, int numkeyattrs, Oid amoid,
|
|
|
100
100
|
bool isready, bool concurrent,
|
|
101
101
|
bool summarizing);
|
|
102
102
|
|
|
103
|
+
extern Node *makeStringConst(char *str, int location);
|
|
103
104
|
extern DefElem *makeDefElem(char *name, Node *arg, int location);
|
|
104
105
|
extern DefElem *makeDefElemExtended(char *nameSpace, char *name, Node *arg,
|
|
105
106
|
DefElemAction defaction, int location);
|
|
@@ -116,6 +117,11 @@ extern Node *makeJsonKeyValue(Node *key, Node *value);
|
|
|
116
117
|
extern Node *makeJsonIsPredicate(Node *expr, JsonFormat *format,
|
|
117
118
|
JsonValueType item_type, bool unique_keys,
|
|
118
119
|
int location);
|
|
119
|
-
extern
|
|
120
|
+
extern JsonBehavior *makeJsonBehavior(JsonBehaviorType btype, Node *expr,
|
|
121
|
+
int location);
|
|
122
|
+
extern JsonTablePath *makeJsonTablePath(Const *pathvalue, char *pathname);
|
|
123
|
+
extern JsonTablePathSpec *makeJsonTablePathSpec(char *string, char *name,
|
|
124
|
+
int string_location,
|
|
125
|
+
int name_location);
|
|
120
126
|
|
|
121
127
|
#endif /* MAKEFUNC_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES memory context node definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/nodes/memnodes.h
|
|
@@ -57,20 +57,58 @@ typedef void (*MemoryStatsPrintFunc) (MemoryContext context, void *passthru,
|
|
|
57
57
|
|
|
58
58
|
typedef struct MemoryContextMethods
|
|
59
59
|
{
|
|
60
|
-
|
|
60
|
+
/*
|
|
61
|
+
* Function to handle memory allocation requests of 'size' to allocate
|
|
62
|
+
* memory into the given 'context'. The function must handle flags
|
|
63
|
+
* MCXT_ALLOC_HUGE and MCXT_ALLOC_NO_OOM. MCXT_ALLOC_ZERO is handled by
|
|
64
|
+
* the calling function.
|
|
65
|
+
*/
|
|
66
|
+
void *(*alloc) (MemoryContext context, Size size, int flags);
|
|
67
|
+
|
|
61
68
|
/* call this free_p in case someone #define's free() */
|
|
62
69
|
void (*free_p) (void *pointer);
|
|
63
|
-
|
|
70
|
+
|
|
71
|
+
/*
|
|
72
|
+
* Function to handle a size change request for an existing allocation.
|
|
73
|
+
* The implementation must handle flags MCXT_ALLOC_HUGE and
|
|
74
|
+
* MCXT_ALLOC_NO_OOM. MCXT_ALLOC_ZERO is handled by the calling function.
|
|
75
|
+
*/
|
|
76
|
+
void *(*realloc) (void *pointer, Size size, int flags);
|
|
77
|
+
|
|
78
|
+
/*
|
|
79
|
+
* Invalidate all previous allocations in the given memory context and
|
|
80
|
+
* prepare the context for a new set of allocations. Implementations may
|
|
81
|
+
* optionally free() excess memory back to the OS during this time.
|
|
82
|
+
*/
|
|
64
83
|
void (*reset) (MemoryContext context);
|
|
84
|
+
|
|
85
|
+
/* Free all memory consumed by the given MemoryContext. */
|
|
65
86
|
void (*delete_context) (MemoryContext context);
|
|
87
|
+
|
|
88
|
+
/* Return the MemoryContext that the given pointer belongs to. */
|
|
66
89
|
MemoryContext (*get_chunk_context) (void *pointer);
|
|
90
|
+
|
|
91
|
+
/*
|
|
92
|
+
* Return the number of bytes consumed by the given pointer within its
|
|
93
|
+
* memory context, including the overhead of alignment and chunk headers.
|
|
94
|
+
*/
|
|
67
95
|
Size (*get_chunk_space) (void *pointer);
|
|
96
|
+
|
|
97
|
+
/*
|
|
98
|
+
* Return true if the given MemoryContext has not had any allocations
|
|
99
|
+
* since it was created or last reset.
|
|
100
|
+
*/
|
|
68
101
|
bool (*is_empty) (MemoryContext context);
|
|
69
102
|
void (*stats) (MemoryContext context,
|
|
70
103
|
MemoryStatsPrintFunc printfunc, void *passthru,
|
|
71
104
|
MemoryContextCounters *totals,
|
|
72
105
|
bool print_to_stderr);
|
|
73
106
|
#ifdef MEMORY_CONTEXT_CHECKING
|
|
107
|
+
|
|
108
|
+
/*
|
|
109
|
+
* Perform validation checks on the given context and raise any discovered
|
|
110
|
+
* anomalies as WARNINGs.
|
|
111
|
+
*/
|
|
74
112
|
void (*check) (MemoryContext context);
|
|
75
113
|
#endif
|
|
76
114
|
} MemoryContextMethods;
|
|
@@ -108,6 +146,7 @@ typedef struct MemoryContextData
|
|
|
108
146
|
((context) != NULL && \
|
|
109
147
|
(IsA((context), AllocSetContext) || \
|
|
110
148
|
IsA((context), SlabContext) || \
|
|
111
|
-
IsA((context), GenerationContext)
|
|
149
|
+
IsA((context), GenerationContext) || \
|
|
150
|
+
IsA((context), BumpContext)))
|
|
112
151
|
|
|
113
152
|
#endif /* MEMNODES_H */
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* "context" pointers.
|
|
11
11
|
*
|
|
12
12
|
*
|
|
13
|
-
* Portions Copyright (c) 1996-
|
|
13
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
14
14
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
15
15
|
*
|
|
16
16
|
* src/include/nodes/miscnodes.h
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* nodeFuncs.h
|
|
4
4
|
* Various general-purpose manipulations of Node trees
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/nodes/nodeFuncs.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Definitions for tagged nodes.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/nodes/nodes.h
|
|
@@ -139,39 +139,18 @@ typedef struct Node
|
|
|
139
139
|
*
|
|
140
140
|
* !WARNING!: Avoid using newNode directly. You should be using the
|
|
141
141
|
* macro makeNode. eg. to create a Query node, use makeNode(Query)
|
|
142
|
-
*
|
|
143
|
-
* Note: the size argument should always be a compile-time constant, so the
|
|
144
|
-
* apparent risk of multiple evaluation doesn't matter in practice.
|
|
145
|
-
*/
|
|
146
|
-
#ifdef __GNUC__
|
|
147
|
-
|
|
148
|
-
/* With GCC, we can use a compound statement within an expression */
|
|
149
|
-
#define newNode(size, tag) \
|
|
150
|
-
({ Node *_result; \
|
|
151
|
-
AssertMacro((size) >= sizeof(Node)); /* need the tag, at least */ \
|
|
152
|
-
_result = (Node *) palloc0fast(size); \
|
|
153
|
-
_result->type = (tag); \
|
|
154
|
-
_result; \
|
|
155
|
-
})
|
|
156
|
-
#else
|
|
157
|
-
|
|
158
|
-
/*
|
|
159
|
-
* There is no way to dereference the palloc'ed pointer to assign the
|
|
160
|
-
* tag, and also return the pointer itself, so we need a holder variable.
|
|
161
|
-
* Fortunately, this macro isn't recursive so we just define
|
|
162
|
-
* a global variable for this purpose.
|
|
163
142
|
*/
|
|
164
|
-
|
|
143
|
+
static inline Node *
|
|
144
|
+
newNode(size_t size, NodeTag tag)
|
|
145
|
+
{
|
|
146
|
+
Node *result;
|
|
165
147
|
|
|
166
|
-
|
|
167
|
-
(
|
|
168
|
-
|
|
169
|
-
newNodeMacroHolder = (Node *) palloc0fast(size), \
|
|
170
|
-
newNodeMacroHolder->type = (tag), \
|
|
171
|
-
newNodeMacroHolder \
|
|
172
|
-
)
|
|
173
|
-
#endif /* __GNUC__ */
|
|
148
|
+
Assert(size >= sizeof(Node)); /* need the tag, at least */
|
|
149
|
+
result = (Node *) palloc0(size);
|
|
150
|
+
result->type = tag;
|
|
174
151
|
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
175
154
|
|
|
176
155
|
#define makeNode(_type_) ((_type_ *) newNode(sizeof(_type_),T_##_type_))
|
|
177
156
|
#define NodeSetTag(nodeptr,t) (((Node*)(nodeptr))->type = (t))
|
|
@@ -216,6 +195,7 @@ extern void outBitmapset(struct StringInfoData *str,
|
|
|
216
195
|
extern void outDatum(struct StringInfoData *str, uintptr_t value,
|
|
217
196
|
int typlen, bool typbyval);
|
|
218
197
|
extern char *nodeToString(const void *obj);
|
|
198
|
+
extern char *nodeToStringWithLocations(const void *obj);
|
|
219
199
|
extern char *bmsToString(const struct Bitmapset *bms);
|
|
220
200
|
|
|
221
201
|
/*
|
|
@@ -251,9 +231,18 @@ extern bool equal(const void *a, const void *b);
|
|
|
251
231
|
|
|
252
232
|
|
|
253
233
|
/*
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
*
|
|
234
|
+
* Typedef for parse location. This is just an int, but this way
|
|
235
|
+
* gen_node_support.pl knows which fields should get special treatment for
|
|
236
|
+
* location values.
|
|
237
|
+
*
|
|
238
|
+
* -1 is used for unknown.
|
|
239
|
+
*/
|
|
240
|
+
typedef int ParseLoc;
|
|
241
|
+
|
|
242
|
+
/*
|
|
243
|
+
* Typedefs for identifying qualifier selectivities, plan costs, and row
|
|
244
|
+
* counts as such. These are just plain "double"s, but declaring a variable
|
|
245
|
+
* as Selectivity, Cost, or Cardinality makes the intent more obvious.
|
|
257
246
|
*
|
|
258
247
|
* These could have gone into plannodes.h or some such, but many files
|
|
259
248
|
* depend on them...
|
|
@@ -280,7 +269,7 @@ typedef enum CmdType
|
|
|
280
269
|
CMD_MERGE, /* merge stmt */
|
|
281
270
|
CMD_UTILITY, /* cmds like create, destroy, copy, vacuum,
|
|
282
271
|
* etc. */
|
|
283
|
-
CMD_NOTHING
|
|
272
|
+
CMD_NOTHING, /* dummy command for instead nothing rules
|
|
284
273
|
* with qual */
|
|
285
274
|
} CmdType;
|
|
286
275
|
|
|
@@ -324,7 +313,7 @@ typedef enum JoinType
|
|
|
324
313
|
* by the executor (nor, indeed, by most of the planner).
|
|
325
314
|
*/
|
|
326
315
|
JOIN_UNIQUE_OUTER, /* LHS path must be made unique */
|
|
327
|
-
JOIN_UNIQUE_INNER /* RHS path must be made unique */
|
|
316
|
+
JOIN_UNIQUE_INNER, /* RHS path must be made unique */
|
|
328
317
|
|
|
329
318
|
/*
|
|
330
319
|
* We might need additional join types someday.
|
|
@@ -364,7 +353,7 @@ typedef enum AggStrategy
|
|
|
364
353
|
AGG_PLAIN, /* simple agg across all input rows */
|
|
365
354
|
AGG_SORTED, /* grouped agg, input must be sorted */
|
|
366
355
|
AGG_HASHED, /* grouped agg, use internal hashtable */
|
|
367
|
-
AGG_MIXED /* grouped agg, hash and sort both used */
|
|
356
|
+
AGG_MIXED, /* grouped agg, hash and sort both used */
|
|
368
357
|
} AggStrategy;
|
|
369
358
|
|
|
370
359
|
/*
|
|
@@ -388,7 +377,7 @@ typedef enum AggSplit
|
|
|
388
377
|
/* Initial phase of partial aggregation, with serialization: */
|
|
389
378
|
AGGSPLIT_INITIAL_SERIAL = AGGSPLITOP_SKIPFINAL | AGGSPLITOP_SERIALIZE,
|
|
390
379
|
/* Final phase of partial aggregation, with deserialization: */
|
|
391
|
-
AGGSPLIT_FINAL_DESERIAL = AGGSPLITOP_COMBINE | AGGSPLITOP_DESERIALIZE
|
|
380
|
+
AGGSPLIT_FINAL_DESERIAL = AGGSPLITOP_COMBINE | AGGSPLITOP_DESERIALIZE,
|
|
392
381
|
} AggSplit;
|
|
393
382
|
|
|
394
383
|
/* Test whether an AggSplit value selects each primitive option: */
|
|
@@ -408,13 +397,13 @@ typedef enum SetOpCmd
|
|
|
408
397
|
SETOPCMD_INTERSECT,
|
|
409
398
|
SETOPCMD_INTERSECT_ALL,
|
|
410
399
|
SETOPCMD_EXCEPT,
|
|
411
|
-
SETOPCMD_EXCEPT_ALL
|
|
400
|
+
SETOPCMD_EXCEPT_ALL,
|
|
412
401
|
} SetOpCmd;
|
|
413
402
|
|
|
414
403
|
typedef enum SetOpStrategy
|
|
415
404
|
{
|
|
416
405
|
SETOP_SORTED, /* input must be sorted */
|
|
417
|
-
SETOP_HASHED /* use internal hashtable */
|
|
406
|
+
SETOP_HASHED, /* use internal hashtable */
|
|
418
407
|
} SetOpStrategy;
|
|
419
408
|
|
|
420
409
|
/*
|
|
@@ -427,7 +416,7 @@ typedef enum OnConflictAction
|
|
|
427
416
|
{
|
|
428
417
|
ONCONFLICT_NONE, /* No "ON CONFLICT" clause */
|
|
429
418
|
ONCONFLICT_NOTHING, /* ON CONFLICT ... DO NOTHING */
|
|
430
|
-
ONCONFLICT_UPDATE /* ON CONFLICT ... DO UPDATE */
|
|
419
|
+
ONCONFLICT_UPDATE, /* ON CONFLICT ... DO UPDATE */
|
|
431
420
|
} OnConflictAction;
|
|
432
421
|
|
|
433
422
|
/*
|