pg_query 4.2.3 → 5.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 +6 -0
- data/README.md +6 -8
- data/Rakefile +3 -3
- data/ext/pg_query/extconf.rb +1 -3
- data/ext/pg_query/include/access/amapi.h +3 -1
- data/ext/pg_query/include/access/attmap.h +5 -3
- data/ext/pg_query/include/access/attnum.h +1 -1
- data/ext/pg_query/include/access/clog.h +1 -1
- data/ext/pg_query/include/access/commit_ts.h +1 -1
- data/ext/pg_query/include/access/detoast.h +1 -1
- data/ext/pg_query/include/access/genam.h +7 -5
- data/ext/pg_query/include/access/gin.h +16 -3
- data/ext/pg_query/include/access/htup.h +1 -1
- data/ext/pg_query/include/access/htup_details.h +6 -2
- data/ext/pg_query/include/access/itup.h +61 -58
- data/ext/pg_query/include/access/parallel.h +2 -2
- data/ext/pg_query/include/access/printtup.h +1 -1
- data/ext/pg_query/include/access/relation.h +1 -1
- data/ext/pg_query/include/access/relscan.h +1 -1
- data/ext/pg_query/include/access/rmgrlist.h +2 -2
- data/ext/pg_query/include/access/sdir.h +12 -3
- data/ext/pg_query/include/access/skey.h +1 -1
- data/ext/pg_query/include/access/stratnum.h +1 -1
- data/ext/pg_query/include/access/sysattr.h +1 -1
- data/ext/pg_query/include/access/table.h +1 -1
- data/ext/pg_query/include/access/tableam.h +68 -45
- data/ext/pg_query/include/access/toast_compression.h +1 -1
- data/ext/pg_query/include/access/transam.h +1 -1
- data/ext/pg_query/include/access/tsmapi.h +82 -0
- data/ext/pg_query/include/access/tupconvert.h +5 -2
- data/ext/pg_query/include/access/tupdesc.h +2 -2
- data/ext/pg_query/include/access/tupmacs.h +58 -98
- data/ext/pg_query/include/access/twophase.h +2 -2
- data/ext/pg_query/include/access/xact.h +25 -18
- data/ext/pg_query/include/access/xlog.h +15 -16
- data/ext/pg_query/include/access/xlog_internal.h +100 -62
- data/ext/pg_query/include/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/access/xlogdefs.h +6 -25
- data/ext/pg_query/include/access/xlogprefetcher.h +1 -1
- data/ext/pg_query/include/access/xlogreader.h +7 -6
- data/ext/pg_query/include/access/xlogrecord.h +17 -5
- data/ext/pg_query/include/access/xlogrecovery.h +4 -3
- data/ext/pg_query/include/archive/archive_module.h +59 -0
- data/ext/pg_query/include/c.h +144 -156
- data/ext/pg_query/include/catalog/catalog.h +4 -3
- data/ext/pg_query/include/catalog/catversion.h +6 -2
- data/ext/pg_query/include/catalog/dependency.h +5 -4
- data/ext/pg_query/include/catalog/genbki.h +7 -6
- data/ext/pg_query/include/catalog/index.h +4 -4
- data/ext/pg_query/include/catalog/indexing.h +1 -1
- data/ext/pg_query/include/catalog/namespace.h +2 -2
- data/ext/pg_query/include/catalog/objectaccess.h +10 -8
- data/ext/pg_query/include/catalog/objectaddress.h +3 -3
- data/ext/pg_query/include/catalog/pg_aggregate.h +1 -1
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_am.h +1 -1
- data/ext/pg_query/include/catalog/pg_am_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_attribute.h +19 -17
- data/ext/pg_query/include/catalog/pg_attribute_d.h +19 -19
- data/ext/pg_query/include/catalog/pg_authid.h +1 -1
- data/ext/pg_query/include/catalog/pg_authid_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_class.h +1 -1
- data/ext/pg_query/include/catalog/pg_class_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_collation.h +3 -1
- data/ext/pg_query/include/catalog/pg_collation_d.h +4 -3
- data/ext/pg_query/include/catalog/pg_constraint.h +2 -2
- data/ext/pg_query/include/catalog/pg_constraint_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_control.h +9 -1
- data/ext/pg_query/include/catalog/pg_conversion.h +2 -2
- data/ext/pg_query/include/catalog/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/catalog/pg_depend.h +1 -1
- data/ext/pg_query/include/catalog/pg_depend_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_event_trigger.h +1 -1
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_index.h +1 -1
- data/ext/pg_query/include/catalog/pg_index_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_language.h +1 -1
- data/ext/pg_query/include/catalog/pg_language_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_namespace.h +1 -1
- data/ext/pg_query/include/catalog/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_opclass.h +1 -1
- data/ext/pg_query/include/catalog/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_operator.h +1 -1
- data/ext/pg_query/include/catalog/pg_operator_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_opfamily.h +3 -2
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +4 -2
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +1 -1
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_proc.h +1 -1
- data/ext/pg_query/include/catalog/pg_proc_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_publication.h +2 -5
- data/ext/pg_query/include/catalog/pg_publication_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_replication_origin.h +1 -1
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_statistic.h +1 -1
- data/ext/pg_query/include/catalog/pg_statistic_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +1 -1
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_transform.h +1 -1
- data/ext/pg_query/include/catalog/pg_transform_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_trigger.h +1 -1
- data/ext/pg_query/include/catalog/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_config.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_dict.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_parser.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_template.h +1 -1
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/catalog/pg_type.h +1 -1
- data/ext/pg_query/include/catalog/pg_type_d.h +1 -1
- data/ext/pg_query/include/catalog/storage.h +6 -6
- data/ext/pg_query/include/commands/async.h +1 -1
- data/ext/pg_query/include/commands/dbcommands.h +2 -1
- data/ext/pg_query/include/commands/defrem.h +2 -1
- data/ext/pg_query/include/commands/event_trigger.h +1 -1
- data/ext/pg_query/include/commands/explain.h +3 -1
- data/ext/pg_query/include/commands/prepare.h +1 -1
- data/ext/pg_query/include/commands/tablespace.h +4 -4
- data/ext/pg_query/include/commands/trigger.h +15 -14
- data/ext/pg_query/include/commands/user.h +9 -3
- data/ext/pg_query/include/commands/vacuum.h +60 -14
- data/ext/pg_query/include/common/cryptohash.h +39 -0
- data/ext/pg_query/include/common/file_perm.h +1 -1
- data/ext/pg_query/include/common/hashfn.h +1 -1
- data/ext/pg_query/include/common/int.h +437 -0
- data/ext/pg_query/include/common/ip.h +4 -2
- data/ext/pg_query/include/common/keywords.h +1 -1
- data/ext/pg_query/include/common/kwlookup.h +2 -2
- data/ext/pg_query/include/common/pg_prng.h +3 -2
- data/ext/pg_query/include/common/relpath.h +20 -13
- data/ext/pg_query/include/common/scram-common.h +70 -0
- data/ext/pg_query/include/common/sha2.h +32 -0
- data/ext/pg_query/include/common/string.h +5 -3
- data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +10 -10
- data/ext/pg_query/include/common/{unicode_combining_table.h → unicode_nonspacing_table.h} +31 -13
- data/ext/pg_query/include/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/datatype/timestamp.h +11 -4
- data/ext/pg_query/include/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/executor/execdesc.h +1 -1
- data/ext/pg_query/include/executor/executor.h +34 -17
- data/ext/pg_query/include/executor/functions.h +1 -1
- data/ext/pg_query/include/executor/instrument.h +1 -1
- data/ext/pg_query/include/executor/spi.h +2 -2
- data/ext/pg_query/include/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/executor/tuptable.h +18 -11
- data/ext/pg_query/include/fmgr.h +21 -2
- data/ext/pg_query/include/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/funcapi.h +12 -12
- data/ext/pg_query/include/gram.h +1127 -0
- data/ext/pg_query/include/{parser/gramparse.h → gramparse.h} +4 -4
- data/ext/pg_query/include/jit/jit.h +2 -2
- data/ext/pg_query/include/kwlist_d.h +534 -510
- data/ext/pg_query/include/lib/dshash.h +4 -1
- data/ext/pg_query/include/lib/ilist.h +435 -22
- data/ext/pg_query/include/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/lib/simplehash.h +9 -9
- data/ext/pg_query/include/lib/sort_template.h +1 -1
- data/ext/pg_query/include/lib/stringinfo.h +3 -3
- data/ext/pg_query/include/libpq/auth.h +8 -2
- data/ext/pg_query/include/libpq/crypt.h +1 -1
- data/ext/pg_query/include/libpq/hba.h +24 -17
- data/ext/pg_query/include/libpq/libpq-be.h +36 -25
- data/ext/pg_query/include/libpq/libpq.h +1 -1
- data/ext/pg_query/include/libpq/pqcomm.h +10 -41
- data/ext/pg_query/include/libpq/pqformat.h +2 -2
- data/ext/pg_query/include/libpq/pqsignal.h +22 -10
- data/ext/pg_query/include/libpq/sasl.h +136 -0
- data/ext/pg_query/include/libpq/scram.h +37 -0
- data/ext/pg_query/include/mb/pg_wchar.h +35 -18
- data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/miscadmin.h +26 -14
- data/ext/pg_query/include/nodes/bitmapset.h +11 -7
- data/ext/pg_query/include/nodes/execnodes.h +83 -30
- data/ext/pg_query/include/nodes/extensible.h +5 -3
- data/ext/pg_query/include/nodes/lockoptions.h +1 -1
- data/ext/pg_query/include/nodes/makefuncs.h +14 -2
- data/ext/pg_query/include/nodes/memnodes.h +7 -4
- data/ext/pg_query/include/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/nodes/nodeFuncs.h +89 -29
- data/ext/pg_query/include/nodes/nodes.h +95 -510
- data/ext/pg_query/include/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/nodes/params.h +3 -3
- data/ext/pg_query/include/nodes/parsenodes.h +377 -139
- data/ext/pg_query/include/nodes/pathnodes.h +1090 -440
- data/ext/pg_query/include/nodes/pg_list.h +30 -7
- data/ext/pg_query/include/nodes/plannodes.h +367 -124
- data/ext/pg_query/include/nodes/primnodes.h +670 -222
- data/ext/pg_query/include/nodes/print.h +1 -1
- data/ext/pg_query/include/{utils → nodes}/queryjumble.h +5 -7
- data/ext/pg_query/include/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/nodes/value.h +12 -2
- data/ext/pg_query/include/optimizer/cost.h +6 -4
- data/ext/pg_query/include/optimizer/geqo.h +1 -1
- data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/optimizer/optimizer.h +8 -8
- data/ext/pg_query/include/optimizer/paths.h +16 -7
- data/ext/pg_query/include/optimizer/planmain.h +3 -6
- data/ext/pg_query/include/parser/analyze.h +4 -3
- data/ext/pg_query/include/parser/kwlist.h +12 -1
- data/ext/pg_query/include/parser/parse_agg.h +4 -2
- data/ext/pg_query/include/parser/parse_coerce.h +3 -1
- data/ext/pg_query/include/parser/parse_expr.h +1 -1
- data/ext/pg_query/include/parser/parse_func.h +1 -1
- data/ext/pg_query/include/parser/parse_node.h +22 -4
- data/ext/pg_query/include/parser/parse_oper.h +3 -3
- data/ext/pg_query/include/parser/parse_relation.h +8 -3
- data/ext/pg_query/include/parser/parse_type.h +4 -3
- data/ext/pg_query/include/parser/parser.h +1 -1
- data/ext/pg_query/include/parser/parsetree.h +1 -1
- data/ext/pg_query/include/parser/scanner.h +2 -2
- data/ext/pg_query/include/parser/scansup.h +1 -1
- data/ext/pg_query/include/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/pg_config.h +21 -216
- data/ext/pg_query/include/pg_config_manual.h +8 -46
- data/ext/pg_query/include/pg_getopt.h +1 -1
- data/ext/pg_query/include/pg_query.h +27 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
- data/ext/pg_query/include/pg_trace.h +1 -1
- data/ext/pg_query/include/pgstat.h +172 -93
- data/ext/pg_query/include/pgtime.h +3 -3
- data/ext/pg_query/include/pl_gram.h +64 -62
- data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -1
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +48 -46
- data/ext/pg_query/include/plpgsql.h +17 -22
- data/ext/pg_query/include/port/atomics/arch-arm.h +3 -3
- data/ext/pg_query/include/port/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/port/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/port/atomics/fallback.h +3 -3
- data/ext/pg_query/include/port/atomics/generic-gcc.h +1 -1
- data/ext/pg_query/include/port/atomics/generic.h +1 -1
- data/ext/pg_query/include/port/atomics.h +2 -7
- data/ext/pg_query/include/port/pg_bitutils.h +62 -25
- data/ext/pg_query/include/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/port/pg_crc32c.h +1 -1
- data/ext/pg_query/include/port/simd.h +375 -0
- data/ext/pg_query/include/port.h +42 -75
- data/ext/pg_query/include/portability/instr_time.h +81 -140
- data/ext/pg_query/include/postgres.h +205 -434
- data/ext/pg_query/include/postgres_ext.h +0 -1
- data/ext/pg_query/include/postmaster/autovacuum.h +1 -4
- data/ext/pg_query/include/postmaster/auxprocess.h +1 -1
- data/ext/pg_query/include/postmaster/bgworker.h +2 -2
- data/ext/pg_query/include/postmaster/bgworker_internals.h +1 -1
- data/ext/pg_query/include/postmaster/bgwriter.h +2 -2
- data/ext/pg_query/include/postmaster/fork_process.h +1 -1
- data/ext/pg_query/include/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postmaster/pgarch.h +1 -38
- data/ext/pg_query/include/postmaster/postmaster.h +5 -2
- data/ext/pg_query/include/postmaster/startup.h +3 -1
- data/ext/pg_query/include/postmaster/syslogger.h +2 -2
- data/ext/pg_query/include/postmaster/walwriter.h +3 -1
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
- data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
- data/ext/pg_query/include/regex/regex.h +9 -6
- data/ext/pg_query/include/replication/logicallauncher.h +6 -1
- data/ext/pg_query/include/replication/logicalproto.h +30 -10
- data/ext/pg_query/include/replication/logicalworker.h +14 -1
- data/ext/pg_query/include/replication/origin.h +4 -4
- data/ext/pg_query/include/replication/reorderbuffer.h +113 -45
- data/ext/pg_query/include/replication/slot.h +25 -6
- data/ext/pg_query/include/replication/syncrep.h +2 -8
- data/ext/pg_query/include/replication/walreceiver.h +15 -9
- data/ext/pg_query/include/replication/walsender.h +13 -13
- data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -4
- data/ext/pg_query/include/rewrite/rewriteManip.h +11 -2
- data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/src_backend_nodes_copyfuncs.funcs.c +5321 -0
- data/ext/pg_query/include/src_backend_nodes_equalfuncs.funcs.c +3354 -0
- data/ext/pg_query/include/storage/backendid.h +1 -1
- data/ext/pg_query/include/storage/block.h +24 -31
- data/ext/pg_query/include/storage/buf.h +1 -1
- data/ext/pg_query/include/storage/bufmgr.h +183 -87
- data/ext/pg_query/include/storage/bufpage.h +146 -93
- data/ext/pg_query/include/storage/condition_variable.h +2 -2
- data/ext/pg_query/include/storage/dsm.h +3 -6
- data/ext/pg_query/include/storage/dsm_impl.h +4 -1
- data/ext/pg_query/include/storage/fd.h +24 -20
- data/ext/pg_query/include/storage/fileset.h +1 -1
- data/ext/pg_query/include/storage/ipc.h +1 -1
- data/ext/pg_query/include/storage/item.h +1 -1
- data/ext/pg_query/include/storage/itemid.h +1 -1
- data/ext/pg_query/include/storage/itemptr.h +94 -57
- data/ext/pg_query/include/storage/large_object.h +1 -1
- data/ext/pg_query/include/storage/latch.h +9 -1
- data/ext/pg_query/include/storage/lmgr.h +6 -1
- data/ext/pg_query/include/storage/lock.h +21 -13
- data/ext/pg_query/include/storage/lockdefs.h +3 -3
- data/ext/pg_query/include/storage/lwlock.h +16 -2
- data/ext/pg_query/include/storage/off.h +1 -1
- data/ext/pg_query/include/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/storage/pg_shmem.h +1 -1
- data/ext/pg_query/include/storage/pmsignal.h +1 -1
- data/ext/pg_query/include/storage/predicate.h +2 -2
- data/ext/pg_query/include/storage/proc.h +22 -17
- data/ext/pg_query/include/storage/procarray.h +3 -2
- data/ext/pg_query/include/storage/proclist_types.h +1 -1
- data/ext/pg_query/include/storage/procsignal.h +3 -1
- data/ext/pg_query/include/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/storage/s_lock.h +66 -309
- data/ext/pg_query/include/storage/sharedfileset.h +1 -1
- data/ext/pg_query/include/storage/shm_mq.h +1 -1
- data/ext/pg_query/include/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/storage/shmem.h +1 -23
- data/ext/pg_query/include/storage/sinval.h +3 -3
- data/ext/pg_query/include/storage/sinvaladt.h +4 -2
- data/ext/pg_query/include/storage/smgr.h +12 -10
- data/ext/pg_query/include/storage/spin.h +1 -1
- data/ext/pg_query/include/storage/standby.h +9 -8
- data/ext/pg_query/include/storage/standbydefs.h +1 -1
- data/ext/pg_query/include/storage/sync.h +3 -3
- data/ext/pg_query/include/tcop/cmdtag.h +7 -2
- data/ext/pg_query/include/tcop/cmdtaglist.h +1 -1
- data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
- data/ext/pg_query/include/tcop/dest.h +1 -3
- data/ext/pg_query/include/tcop/fastpath.h +1 -1
- data/ext/pg_query/include/tcop/pquery.h +1 -1
- data/ext/pg_query/include/tcop/tcopprot.h +1 -4
- data/ext/pg_query/include/tcop/utility.h +1 -1
- data/ext/pg_query/include/tsearch/ts_cache.h +2 -4
- data/ext/pg_query/include/utils/acl.h +26 -81
- data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/utils/array.h +19 -1
- data/ext/pg_query/include/utils/backend_progress.h +2 -1
- data/ext/pg_query/include/utils/backend_status.h +24 -3
- data/ext/pg_query/include/utils/builtins.h +14 -5
- data/ext/pg_query/include/utils/bytea.h +1 -1
- data/ext/pg_query/include/utils/catcache.h +1 -1
- data/ext/pg_query/include/utils/date.h +37 -9
- data/ext/pg_query/include/utils/datetime.h +41 -21
- data/ext/pg_query/include/utils/datum.h +1 -1
- data/ext/pg_query/include/utils/dsa.h +5 -1
- data/ext/pg_query/include/utils/elog.h +101 -26
- data/ext/pg_query/include/utils/expandeddatum.h +14 -3
- data/ext/pg_query/include/utils/expandedrecord.h +14 -4
- data/ext/pg_query/include/utils/float.h +7 -6
- data/ext/pg_query/include/utils/fmgroids.h +54 -1
- data/ext/pg_query/include/utils/fmgrprotos.h +45 -3
- data/ext/pg_query/include/utils/fmgrtab.h +1 -1
- data/ext/pg_query/include/utils/guc.h +55 -82
- data/ext/pg_query/include/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/utils/guc_tables.h +49 -3
- data/ext/pg_query/include/utils/hsearch.h +1 -1
- data/ext/pg_query/include/utils/inval.h +3 -3
- data/ext/pg_query/include/utils/logtape.h +77 -0
- data/ext/pg_query/include/utils/lsyscache.h +5 -1
- data/ext/pg_query/include/utils/memdebug.h +1 -1
- data/ext/pg_query/include/utils/memutils.h +5 -49
- data/ext/pg_query/include/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/utils/numeric.h +20 -5
- data/ext/pg_query/include/utils/palloc.h +8 -1
- data/ext/pg_query/include/utils/partcache.h +3 -2
- data/ext/pg_query/include/utils/pg_locale.h +22 -14
- data/ext/pg_query/include/utils/pgstat_internal.h +37 -7
- data/ext/pg_query/include/utils/pidfile.h +1 -1
- data/ext/pg_query/include/utils/plancache.h +1 -1
- data/ext/pg_query/include/utils/portal.h +1 -1
- data/ext/pg_query/include/utils/probes.h +6 -6
- data/ext/pg_query/include/utils/ps_status.h +23 -1
- data/ext/pg_query/include/utils/queryenvironment.h +1 -1
- data/ext/pg_query/include/utils/regproc.h +3 -3
- data/ext/pg_query/include/utils/rel.h +60 -43
- data/ext/pg_query/include/utils/relcache.h +13 -8
- data/ext/pg_query/include/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/utils/resowner.h +1 -1
- data/ext/pg_query/include/utils/ruleutils.h +6 -1
- data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/utils/snapmgr.h +4 -2
- data/ext/pg_query/include/utils/snapshot.h +1 -1
- data/ext/pg_query/include/utils/sortsupport.h +2 -2
- data/ext/pg_query/include/utils/syscache.h +4 -1
- data/ext/pg_query/include/utils/timeout.h +1 -1
- data/ext/pg_query/include/utils/timestamp.h +41 -11
- data/ext/pg_query/include/utils/tuplesort.h +189 -35
- data/ext/pg_query/include/utils/tuplestore.h +1 -1
- data/ext/pg_query/include/utils/typcache.h +1 -1
- data/ext/pg_query/include/utils/varlena.h +13 -1
- data/ext/pg_query/include/utils/wait_event.h +9 -4
- data/ext/pg_query/include/utils/xml.h +15 -5
- data/ext/pg_query/include/varatt.h +358 -0
- data/ext/pg_query/pg_query.c +1 -1
- data/ext/pg_query/pg_query.pb-c.c +19755 -17757
- data/ext/pg_query/pg_query_fingerprint.c +8 -3
- data/ext/pg_query/pg_query_fingerprint.h +1 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +2 -2
- data/ext/pg_query/pg_query_parse.c +46 -4
- data/ext/pg_query/pg_query_parse_plpgsql.c +1 -1
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/pg_query_split.c +2 -2
- data/ext/pg_query/postgres_deparse.c +503 -105
- data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
- data/ext/pg_query/src_backend_commands_define.c +1 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +14 -2
- data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
- data/ext/pg_query/src_backend_parser_parser.c +28 -2
- data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
- data/ext/pg_query/src_backend_parser_scansup.c +1 -1
- data/ext/pg_query/src_backend_postmaster_postmaster.c +129 -110
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
- 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 +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
- data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
- data/ext/pg_query/src_backend_utils_error_elog.c +354 -97
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
- data/ext/pg_query/src_backend_utils_init_globals.c +5 -2
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +13 -4
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +494 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
- data/ext/pg_query/src_common_encnames.c +4 -1
- 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 +534 -510
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_stringinfo.c +4 -4
- data/ext/pg_query/src_common_wchar.c +9 -8
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
- 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 +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
- data/ext/pg_query/src_port_pg_bitutils.c +1 -1
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +3 -7
- data/ext/pg_query/src_port_strerror.c +1 -1
- data/ext/pg_query/src_port_strnlen.c +1 -1
- data/lib/pg_query/pg_query_pb.rb +166 -3191
- data/lib/pg_query/treewalker.rb +7 -2
- data/lib/pg_query/version.rb +1 -1
- metadata +43 -24
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/parser/gram.h +0 -1101
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -20
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
- data/ext/pg_query/src_common_pg_prng.c +0 -152
- data/ext/pg_query/src_common_string.c +0 -92
- data/ext/pg_query/src_port_pgsleep.c +0 -69
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* pl_unreserved_kwlist_d.h
|
|
4
4
|
* List of keywords represented as a ScanKeywordList.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* NOTES
|
|
@@ -80,6 +80,7 @@ static const char UnreservedPLKeywords_kw_string[] =
|
|
|
80
80
|
"pg_exception_context\0"
|
|
81
81
|
"pg_exception_detail\0"
|
|
82
82
|
"pg_exception_hint\0"
|
|
83
|
+
"pg_routine_oid\0"
|
|
83
84
|
"print_strict_params\0"
|
|
84
85
|
"prior\0"
|
|
85
86
|
"query\0"
|
|
@@ -165,63 +166,64 @@ static const uint16 UnreservedPLKeywords_kw_offsets[] = {
|
|
|
165
166
|
420,
|
|
166
167
|
440,
|
|
167
168
|
458,
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
496,
|
|
169
|
+
473,
|
|
170
|
+
493,
|
|
171
|
+
499,
|
|
172
172
|
505,
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
173
|
+
511,
|
|
174
|
+
520,
|
|
175
|
+
527,
|
|
176
|
+
545,
|
|
177
|
+
553,
|
|
178
|
+
562,
|
|
179
179
|
572,
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
180
|
+
580,
|
|
181
|
+
587,
|
|
182
|
+
599,
|
|
183
183
|
606,
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
184
|
+
612,
|
|
185
|
+
621,
|
|
186
|
+
629,
|
|
187
|
+
635,
|
|
188
|
+
646,
|
|
189
|
+
651,
|
|
190
|
+
662,
|
|
191
|
+
675,
|
|
192
|
+
693,
|
|
191
193
|
};
|
|
192
194
|
|
|
193
|
-
#define UNRESERVEDPLKEYWORDS_NUM_KEYWORDS
|
|
195
|
+
#define UNRESERVEDPLKEYWORDS_NUM_KEYWORDS 83
|
|
194
196
|
|
|
195
197
|
static int
|
|
196
198
|
UnreservedPLKeywords_hash_func(const void *key, size_t keylen)
|
|
197
199
|
{
|
|
198
|
-
static const int16 h[
|
|
199
|
-
|
|
200
|
-
0,
|
|
201
|
-
|
|
202
|
-
32767,
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
32767,
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
32767,
|
|
214
|
-
32767, 32767,
|
|
215
|
-
32767,
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
200
|
+
static const int16 h[167] = {
|
|
201
|
+
0, -26, 32767, 0, 74, -36, 32767, 32767,
|
|
202
|
+
93, 0, 35, 14, 34, -65, -42, 78,
|
|
203
|
+
-22, 8, 10, 0, 5, 32767, 10, 26,
|
|
204
|
+
32767, 4, 32767, 32767, -81, -9, -25, 32767,
|
|
205
|
+
-17, 11, 0, -43, 11, 8, 45, 0,
|
|
206
|
+
32767, 32767, 32767, 12, 0, 32767, 32, 32767,
|
|
207
|
+
0, 32767, -18, 64, 32767, -2, 31, 32767,
|
|
208
|
+
50, 80, -75, 32767, 32767, 32767, 0, 32767,
|
|
209
|
+
32767, 0, 54, 82, 32767, 32767, 69, 60,
|
|
210
|
+
43, 32767, 0, 95, 21, 1, 27, 0,
|
|
211
|
+
120, 32767, -46, 32767, -57, 32767, 32767, 55,
|
|
212
|
+
70, 32767, 28, 32767, 0, -14, -38, 32767,
|
|
213
|
+
57, 0, 32767, 19, 98, 0, 32767, 68,
|
|
214
|
+
32767, 32767, 32767, 32767, -26, 13, 27, 35,
|
|
215
|
+
37, 32767, 49, -44, 65, -35, 0, 32767,
|
|
216
|
+
32767, 32767, 30, 0, 0, 32767, 26, 42,
|
|
217
|
+
7, 32767, 72, -43, 32767, 0, 32767, 89,
|
|
218
|
+
36, 48, 32767, 32, 38, 3, 32767, 49,
|
|
219
|
+
32767, 0, 51, 0, 32767, 73, 32767, 32767,
|
|
220
|
+
79, 32767, 30, 32767, 0, 0, 50, 32767,
|
|
221
|
+
0, 32767, 32767, 32767, 0, 32767, 32767
|
|
220
222
|
};
|
|
221
223
|
|
|
222
224
|
const unsigned char *k = (const unsigned char *) key;
|
|
223
225
|
uint32 a = 0;
|
|
224
|
-
uint32 b =
|
|
226
|
+
uint32 b = 1;
|
|
225
227
|
|
|
226
228
|
while (keylen--)
|
|
227
229
|
{
|
|
@@ -230,7 +232,7 @@ UnreservedPLKeywords_hash_func(const void *key, size_t keylen)
|
|
|
230
232
|
a = a * 257 + c;
|
|
231
233
|
b = b * 8191 + c;
|
|
232
234
|
}
|
|
233
|
-
return h[a %
|
|
235
|
+
return h[a % 167] + h[b % 167];
|
|
234
236
|
}
|
|
235
237
|
|
|
236
238
|
static const ScanKeywordList UnreservedPLKeywords = {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* plpgsql.h - Definitions for the PL/pgSQL
|
|
4
4
|
* procedural language
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
*
|
|
@@ -147,6 +147,7 @@ enum
|
|
|
147
147
|
typedef enum PLpgSQL_getdiag_kind
|
|
148
148
|
{
|
|
149
149
|
PLPGSQL_GETDIAG_ROW_COUNT,
|
|
150
|
+
PLPGSQL_GETDIAG_ROUTINE_OID,
|
|
150
151
|
PLPGSQL_GETDIAG_CONTEXT,
|
|
151
152
|
PLPGSQL_GETDIAG_ERROR_CONTEXT,
|
|
152
153
|
PLPGSQL_GETDIAG_ERROR_DETAIL,
|
|
@@ -1075,7 +1076,6 @@ typedef struct PLpgSQL_execstate
|
|
|
1075
1076
|
|
|
1076
1077
|
/* lookup table to use for executing type casts */
|
|
1077
1078
|
HTAB *cast_hash;
|
|
1078
|
-
MemoryContext cast_hash_context;
|
|
1079
1079
|
|
|
1080
1080
|
/* memory context for statement-lifespan temporary values */
|
|
1081
1081
|
MemoryContext stmt_mcontext; /* current stmt context, or NULL if none */
|
|
@@ -1231,11 +1231,11 @@ extern PLpgSQL_plugin **plpgsql_plugin_ptr;
|
|
|
1231
1231
|
/*
|
|
1232
1232
|
* Functions in pl_comp.c
|
|
1233
1233
|
*/
|
|
1234
|
-
extern PLpgSQL_function *plpgsql_compile(FunctionCallInfo fcinfo,
|
|
1235
|
-
|
|
1234
|
+
extern PGDLLEXPORT PLpgSQL_function *plpgsql_compile(FunctionCallInfo fcinfo,
|
|
1235
|
+
bool forValidator);
|
|
1236
1236
|
extern PLpgSQL_function *plpgsql_compile_inline(char *proc_source);
|
|
1237
|
-
extern void plpgsql_parser_setup(struct ParseState *pstate,
|
|
1238
|
-
|
|
1237
|
+
extern PGDLLEXPORT void plpgsql_parser_setup(struct ParseState *pstate,
|
|
1238
|
+
PLpgSQL_expr *expr);
|
|
1239
1239
|
extern bool plpgsql_parse_word(char *word1, const char *yytxt, bool lookup,
|
|
1240
1240
|
PLwdatum *wdatum, PLword *word);
|
|
1241
1241
|
extern bool plpgsql_parse_dblword(char *word1, char *word2,
|
|
@@ -1246,9 +1246,9 @@ extern PLpgSQL_type *plpgsql_parse_wordtype(char *ident);
|
|
|
1246
1246
|
extern PLpgSQL_type *plpgsql_parse_cwordtype(List *idents);
|
|
1247
1247
|
extern PLpgSQL_type *plpgsql_parse_wordrowtype(char *ident);
|
|
1248
1248
|
extern PLpgSQL_type *plpgsql_parse_cwordrowtype(List *idents);
|
|
1249
|
-
extern PLpgSQL_type *plpgsql_build_datatype(Oid typeOid, int32 typmod,
|
|
1250
|
-
|
|
1251
|
-
|
|
1249
|
+
extern PGDLLEXPORT PLpgSQL_type *plpgsql_build_datatype(Oid typeOid, int32 typmod,
|
|
1250
|
+
Oid collation,
|
|
1251
|
+
TypeName *origtypname);
|
|
1252
1252
|
extern PLpgSQL_variable *plpgsql_build_variable(const char *refname, int lineno,
|
|
1253
1253
|
PLpgSQL_type *dtype,
|
|
1254
1254
|
bool add2namespace);
|
|
@@ -1257,8 +1257,8 @@ extern PLpgSQL_rec *plpgsql_build_record(const char *refname, int lineno,
|
|
|
1257
1257
|
bool add2namespace);
|
|
1258
1258
|
extern PLpgSQL_recfield *plpgsql_build_recfield(PLpgSQL_rec *rec,
|
|
1259
1259
|
const char *fldname);
|
|
1260
|
-
extern int
|
|
1261
|
-
|
|
1260
|
+
extern PGDLLEXPORT int plpgsql_recognize_err_condition(const char *condname,
|
|
1261
|
+
bool allow_sqlstate);
|
|
1262
1262
|
extern PLpgSQL_condition *plpgsql_parse_err_condition(char *condname);
|
|
1263
1263
|
extern void plpgsql_start_datums(void);
|
|
1264
1264
|
extern void plpgsql_finish_datums(PLpgSQL_function *function);
|
|
@@ -1266,11 +1266,6 @@ extern void plpgsql_adddatum(PLpgSQL_datum *newdatum);
|
|
|
1266
1266
|
extern int plpgsql_add_initdatums(int **varnos);
|
|
1267
1267
|
extern void plpgsql_HashTableInit(void);
|
|
1268
1268
|
|
|
1269
|
-
/*
|
|
1270
|
-
* Functions in pl_handler.c
|
|
1271
|
-
*/
|
|
1272
|
-
extern void _PG_init(void);
|
|
1273
|
-
|
|
1274
1269
|
/*
|
|
1275
1270
|
* Functions in pl_exec.c
|
|
1276
1271
|
*/
|
|
@@ -1287,8 +1282,8 @@ extern void plpgsql_exec_event_trigger(PLpgSQL_function *func,
|
|
|
1287
1282
|
extern void plpgsql_xact_cb(XactEvent event, void *arg);
|
|
1288
1283
|
extern void plpgsql_subxact_cb(SubXactEvent event, SubTransactionId mySubid,
|
|
1289
1284
|
SubTransactionId parentSubid, void *arg);
|
|
1290
|
-
extern Oid
|
|
1291
|
-
|
|
1285
|
+
extern PGDLLEXPORT Oid plpgsql_exec_get_datum_type(PLpgSQL_execstate *estate,
|
|
1286
|
+
PLpgSQL_datum *datum);
|
|
1292
1287
|
extern void plpgsql_exec_get_datum_type_info(PLpgSQL_execstate *estate,
|
|
1293
1288
|
PLpgSQL_datum *datum,
|
|
1294
1289
|
Oid *typeId, int32 *typMod,
|
|
@@ -1303,9 +1298,9 @@ extern void plpgsql_ns_push(const char *label,
|
|
|
1303
1298
|
extern void plpgsql_ns_pop(void);
|
|
1304
1299
|
extern PLpgSQL_nsitem *plpgsql_ns_top(void);
|
|
1305
1300
|
extern void plpgsql_ns_additem(PLpgSQL_nsitem_type itemtype, int itemno, const char *name);
|
|
1306
|
-
extern PLpgSQL_nsitem *plpgsql_ns_lookup(PLpgSQL_nsitem *ns_cur, bool localmode,
|
|
1307
|
-
|
|
1308
|
-
|
|
1301
|
+
extern PGDLLEXPORT PLpgSQL_nsitem *plpgsql_ns_lookup(PLpgSQL_nsitem *ns_cur, bool localmode,
|
|
1302
|
+
const char *name1, const char *name2,
|
|
1303
|
+
const char *name3, int *names_used);
|
|
1309
1304
|
extern PLpgSQL_nsitem *plpgsql_ns_lookup_label(PLpgSQL_nsitem *ns_cur,
|
|
1310
1305
|
const char *name);
|
|
1311
1306
|
extern PLpgSQL_nsitem *plpgsql_ns_find_nearest_loop(PLpgSQL_nsitem *ns_cur);
|
|
@@ -1313,7 +1308,7 @@ extern PLpgSQL_nsitem *plpgsql_ns_find_nearest_loop(PLpgSQL_nsitem *ns_cur);
|
|
|
1313
1308
|
/*
|
|
1314
1309
|
* Other functions in pl_funcs.c
|
|
1315
1310
|
*/
|
|
1316
|
-
extern const char *plpgsql_stmt_typename(PLpgSQL_stmt *stmt);
|
|
1311
|
+
extern PGDLLEXPORT const char *plpgsql_stmt_typename(PLpgSQL_stmt *stmt);
|
|
1317
1312
|
extern const char *plpgsql_getdiag_kindname(PLpgSQL_getdiag_kind kind);
|
|
1318
1313
|
extern void plpgsql_free_function_memory(PLpgSQL_function *func);
|
|
1319
1314
|
extern void plpgsql_dumptree(PLpgSQL_function *func);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* arch-arm.h
|
|
4
4
|
* Atomic operations considerations specific to ARM
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 2013-
|
|
6
|
+
* Portions Copyright (c) 2013-2023, PostgreSQL Global Development Group
|
|
7
7
|
*
|
|
8
8
|
* NOTES:
|
|
9
9
|
*
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* 64 bit atomics on ARM32 are implemented using kernel fallbacks and thus
|
|
22
22
|
* might be slow, so disable entirely. On ARM64 that problem doesn't exist.
|
|
23
23
|
*/
|
|
24
|
-
#if !defined(__aarch64__)
|
|
24
|
+
#if !defined(__aarch64__)
|
|
25
25
|
#define PG_DISABLE_64_BIT_ATOMICS
|
|
26
26
|
#else
|
|
27
27
|
/*
|
|
@@ -29,4 +29,4 @@
|
|
|
29
29
|
* general purpose register is atomic.
|
|
30
30
|
*/
|
|
31
31
|
#define PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY
|
|
32
|
-
#endif /* __aarch64__
|
|
32
|
+
#endif /* __aarch64__ */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* arch-ppc.h
|
|
4
4
|
* Atomic operations considerations specific to PowerPC
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* NOTES:
|
|
@@ -90,12 +90,12 @@ pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
|
|
|
90
90
|
(int32) *expected >= PG_INT16_MIN)
|
|
91
91
|
__asm__ __volatile__(
|
|
92
92
|
" sync \n"
|
|
93
|
-
" lwarx %0,0,%5
|
|
93
|
+
" lwarx %0,0,%5,1 \n"
|
|
94
94
|
" cmpwi %0,%3 \n"
|
|
95
|
-
" bne $+12 \n" /* branch to
|
|
95
|
+
" bne $+12 \n" /* branch to lwsync */
|
|
96
96
|
" stwcx. %4,0,%5 \n"
|
|
97
97
|
" bne $-16 \n" /* branch to lwarx */
|
|
98
|
-
"
|
|
98
|
+
" lwsync \n"
|
|
99
99
|
" mfcr %1 \n"
|
|
100
100
|
: "=&r"(found), "=r"(condition_register), "+m"(ptr->value)
|
|
101
101
|
: "i"(*expected), "r"(newval), "r"(&ptr->value)
|
|
@@ -104,12 +104,12 @@ pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
|
|
|
104
104
|
#endif
|
|
105
105
|
__asm__ __volatile__(
|
|
106
106
|
" sync \n"
|
|
107
|
-
" lwarx %0,0,%5
|
|
107
|
+
" lwarx %0,0,%5,1 \n"
|
|
108
108
|
" cmpw %0,%3 \n"
|
|
109
|
-
" bne $+12 \n" /* branch to
|
|
109
|
+
" bne $+12 \n" /* branch to lwsync */
|
|
110
110
|
" stwcx. %4,0,%5 \n"
|
|
111
111
|
" bne $-16 \n" /* branch to lwarx */
|
|
112
|
-
"
|
|
112
|
+
" lwsync \n"
|
|
113
113
|
" mfcr %1 \n"
|
|
114
114
|
: "=&r"(found), "=r"(condition_register), "+m"(ptr->value)
|
|
115
115
|
: "r"(*expected), "r"(newval), "r"(&ptr->value)
|
|
@@ -138,11 +138,11 @@ pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_)
|
|
|
138
138
|
add_ <= PG_INT16_MAX && add_ >= PG_INT16_MIN)
|
|
139
139
|
__asm__ __volatile__(
|
|
140
140
|
" sync \n"
|
|
141
|
-
" lwarx %1,0,%4
|
|
141
|
+
" lwarx %1,0,%4,1 \n"
|
|
142
142
|
" addi %0,%1,%3 \n"
|
|
143
143
|
" stwcx. %0,0,%4 \n"
|
|
144
144
|
" bne $-12 \n" /* branch to lwarx */
|
|
145
|
-
"
|
|
145
|
+
" lwsync \n"
|
|
146
146
|
: "=&r"(_t), "=&b"(res), "+m"(ptr->value)
|
|
147
147
|
: "i"(add_), "r"(&ptr->value)
|
|
148
148
|
: "memory", "cc");
|
|
@@ -150,11 +150,11 @@ pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_)
|
|
|
150
150
|
#endif
|
|
151
151
|
__asm__ __volatile__(
|
|
152
152
|
" sync \n"
|
|
153
|
-
" lwarx %1,0,%4
|
|
153
|
+
" lwarx %1,0,%4,1 \n"
|
|
154
154
|
" add %0,%1,%3 \n"
|
|
155
155
|
" stwcx. %0,0,%4 \n"
|
|
156
156
|
" bne $-12 \n" /* branch to lwarx */
|
|
157
|
-
"
|
|
157
|
+
" lwsync \n"
|
|
158
158
|
: "=&r"(_t), "=&r"(res), "+m"(ptr->value)
|
|
159
159
|
: "r"(add_), "r"(&ptr->value)
|
|
160
160
|
: "memory", "cc");
|
|
@@ -180,12 +180,12 @@ pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr,
|
|
|
180
180
|
(int64) *expected >= PG_INT16_MIN)
|
|
181
181
|
__asm__ __volatile__(
|
|
182
182
|
" sync \n"
|
|
183
|
-
" ldarx %0,0,%5
|
|
183
|
+
" ldarx %0,0,%5,1 \n"
|
|
184
184
|
" cmpdi %0,%3 \n"
|
|
185
|
-
" bne $+12 \n" /* branch to
|
|
185
|
+
" bne $+12 \n" /* branch to lwsync */
|
|
186
186
|
" stdcx. %4,0,%5 \n"
|
|
187
187
|
" bne $-16 \n" /* branch to ldarx */
|
|
188
|
-
"
|
|
188
|
+
" lwsync \n"
|
|
189
189
|
" mfcr %1 \n"
|
|
190
190
|
: "=&r"(found), "=r"(condition_register), "+m"(ptr->value)
|
|
191
191
|
: "i"(*expected), "r"(newval), "r"(&ptr->value)
|
|
@@ -194,12 +194,12 @@ pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr,
|
|
|
194
194
|
#endif
|
|
195
195
|
__asm__ __volatile__(
|
|
196
196
|
" sync \n"
|
|
197
|
-
" ldarx %0,0,%5
|
|
197
|
+
" ldarx %0,0,%5,1 \n"
|
|
198
198
|
" cmpd %0,%3 \n"
|
|
199
|
-
" bne $+12 \n" /* branch to
|
|
199
|
+
" bne $+12 \n" /* branch to lwsync */
|
|
200
200
|
" stdcx. %4,0,%5 \n"
|
|
201
201
|
" bne $-16 \n" /* branch to ldarx */
|
|
202
|
-
"
|
|
202
|
+
" lwsync \n"
|
|
203
203
|
" mfcr %1 \n"
|
|
204
204
|
: "=&r"(found), "=r"(condition_register), "+m"(ptr->value)
|
|
205
205
|
: "r"(*expected), "r"(newval), "r"(&ptr->value)
|
|
@@ -224,11 +224,11 @@ pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_)
|
|
|
224
224
|
add_ <= PG_INT16_MAX && add_ >= PG_INT16_MIN)
|
|
225
225
|
__asm__ __volatile__(
|
|
226
226
|
" sync \n"
|
|
227
|
-
" ldarx %1,0,%4
|
|
227
|
+
" ldarx %1,0,%4,1 \n"
|
|
228
228
|
" addi %0,%1,%3 \n"
|
|
229
229
|
" stdcx. %0,0,%4 \n"
|
|
230
230
|
" bne $-12 \n" /* branch to ldarx */
|
|
231
|
-
"
|
|
231
|
+
" lwsync \n"
|
|
232
232
|
: "=&r"(_t), "=&b"(res), "+m"(ptr->value)
|
|
233
233
|
: "i"(add_), "r"(&ptr->value)
|
|
234
234
|
: "memory", "cc");
|
|
@@ -236,11 +236,11 @@ pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_)
|
|
|
236
236
|
#endif
|
|
237
237
|
__asm__ __volatile__(
|
|
238
238
|
" sync \n"
|
|
239
|
-
" ldarx %1,0,%4
|
|
239
|
+
" ldarx %1,0,%4,1 \n"
|
|
240
240
|
" add %0,%1,%3 \n"
|
|
241
241
|
" stdcx. %0,0,%4 \n"
|
|
242
242
|
" bne $-12 \n" /* branch to ldarx */
|
|
243
|
-
"
|
|
243
|
+
" lwsync \n"
|
|
244
244
|
: "=&r"(_t), "=&r"(res), "+m"(ptr->value)
|
|
245
245
|
: "r"(add_), "r"(&ptr->value)
|
|
246
246
|
: "memory", "cc");
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* support for xadd and cmpxchg. Given that the 386 isn't supported anywhere
|
|
8
8
|
* anymore that's not much of a restriction luckily.
|
|
9
9
|
*
|
|
10
|
-
* Portions Copyright (c) 1996-
|
|
10
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
11
11
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
12
12
|
*
|
|
13
13
|
* NOTES:
|
|
@@ -140,7 +140,7 @@ pg_spin_delay_impl(void)
|
|
|
140
140
|
static inline bool
|
|
141
141
|
pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr)
|
|
142
142
|
{
|
|
143
|
-
|
|
143
|
+
char _res = 1;
|
|
144
144
|
|
|
145
145
|
__asm__ __volatile__(
|
|
146
146
|
" lock \n"
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Fallback for platforms without spinlock and/or atomics support. Slower
|
|
5
5
|
* than native atomics support, but not unusably slow.
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/port/atomics/fallback.h
|
|
@@ -93,7 +93,7 @@ typedef struct pg_atomic_flag
|
|
|
93
93
|
typedef struct pg_atomic_uint32
|
|
94
94
|
{
|
|
95
95
|
/* Check pg_atomic_flag's definition above for an explanation */
|
|
96
|
-
#if defined(__hppa) || defined(__hppa__) /* HP PA-RISC
|
|
96
|
+
#if defined(__hppa) || defined(__hppa__) /* HP PA-RISC */
|
|
97
97
|
int sema[4];
|
|
98
98
|
#else
|
|
99
99
|
int sema;
|
|
@@ -111,7 +111,7 @@ typedef struct pg_atomic_uint32
|
|
|
111
111
|
typedef struct pg_atomic_uint64
|
|
112
112
|
{
|
|
113
113
|
/* Check pg_atomic_flag's definition above for an explanation */
|
|
114
|
-
#if defined(__hppa) || defined(__hppa__) /* HP PA-RISC
|
|
114
|
+
#if defined(__hppa) || defined(__hppa__) /* HP PA-RISC */
|
|
115
115
|
int sema[4];
|
|
116
116
|
#else
|
|
117
117
|
int sema;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* generic-gcc.h
|
|
4
4
|
* Atomic operations, implemented using gcc (or compatible) intrinsics.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* NOTES:
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Implement higher level operations based on some lower level atomic
|
|
5
5
|
* operations.
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/port/atomics/generic.h
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
* For an introduction to using memory barriers within the PostgreSQL backend,
|
|
29
29
|
* see src/backend/storage/lmgr/README.barrier
|
|
30
30
|
*
|
|
31
|
-
* Portions Copyright (c) 1996-
|
|
31
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
32
32
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
33
33
|
*
|
|
34
34
|
* src/include/port/atomics.h
|
|
@@ -63,13 +63,10 @@
|
|
|
63
63
|
* compiler barrier.
|
|
64
64
|
*
|
|
65
65
|
*/
|
|
66
|
-
#if defined(__arm__) || defined(__arm) ||
|
|
67
|
-
defined(__aarch64__) || defined(__aarch64)
|
|
66
|
+
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
|
|
68
67
|
#include "port/atomics/arch-arm.h"
|
|
69
68
|
#elif defined(__i386__) || defined(__i386) || defined(__x86_64__)
|
|
70
69
|
#include "port/atomics/arch-x86.h"
|
|
71
|
-
#elif defined(__ia64__) || defined(__ia64)
|
|
72
|
-
#include "port/atomics/arch-ia64.h"
|
|
73
70
|
#elif defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
|
|
74
71
|
#include "port/atomics/arch-ppc.h"
|
|
75
72
|
#elif defined(__hppa) || defined(__hppa__)
|
|
@@ -95,8 +92,6 @@
|
|
|
95
92
|
#include "port/atomics/generic-gcc.h"
|
|
96
93
|
#elif defined(_MSC_VER)
|
|
97
94
|
#include "port/atomics/generic-msvc.h"
|
|
98
|
-
#elif defined(__hpux) && defined(__ia64) && !defined(__GNUC__)
|
|
99
|
-
#include "port/atomics/generic-acc.h"
|
|
100
95
|
#elif defined(__SUNPRO_C) && !defined(__GNUC__)
|
|
101
96
|
#include "port/atomics/generic-sunpro.h"
|
|
102
97
|
#else
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Miscellaneous functions for bit-wise operations.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Copyright (c) 2019-
|
|
7
|
+
* Copyright (c) 2019-2023, PostgreSQL Global Development Group
|
|
8
8
|
*
|
|
9
9
|
* src/include/port/pg_bitutils.h
|
|
10
10
|
*
|
|
@@ -13,6 +13,21 @@
|
|
|
13
13
|
#ifndef PG_BITUTILS_H
|
|
14
14
|
#define PG_BITUTILS_H
|
|
15
15
|
|
|
16
|
+
#ifdef _MSC_VER
|
|
17
|
+
#include <intrin.h>
|
|
18
|
+
#define HAVE_BITSCAN_FORWARD
|
|
19
|
+
#define HAVE_BITSCAN_REVERSE
|
|
20
|
+
|
|
21
|
+
#else
|
|
22
|
+
#if defined(HAVE__BUILTIN_CTZ)
|
|
23
|
+
#define HAVE_BITSCAN_FORWARD
|
|
24
|
+
#endif
|
|
25
|
+
|
|
26
|
+
#if defined(HAVE__BUILTIN_CLZ)
|
|
27
|
+
#define HAVE_BITSCAN_REVERSE
|
|
28
|
+
#endif
|
|
29
|
+
#endif /* _MSC_VER */
|
|
30
|
+
|
|
16
31
|
extern PGDLLIMPORT const uint8 pg_leftmost_one_pos[256];
|
|
17
32
|
extern PGDLLIMPORT const uint8 pg_rightmost_one_pos[256];
|
|
18
33
|
extern PGDLLIMPORT const uint8 pg_number_of_ones[256];
|
|
@@ -29,6 +44,13 @@ pg_leftmost_one_pos32(uint32 word)
|
|
|
29
44
|
Assert(word != 0);
|
|
30
45
|
|
|
31
46
|
return 31 - __builtin_clz(word);
|
|
47
|
+
#elif defined(_MSC_VER)
|
|
48
|
+
unsigned long result;
|
|
49
|
+
bool non_zero;
|
|
50
|
+
|
|
51
|
+
non_zero = _BitScanReverse(&result, word);
|
|
52
|
+
Assert(non_zero);
|
|
53
|
+
return (int) result;
|
|
32
54
|
#else
|
|
33
55
|
int shift = 32 - 8;
|
|
34
56
|
|
|
@@ -57,8 +79,16 @@ pg_leftmost_one_pos64(uint64 word)
|
|
|
57
79
|
return 63 - __builtin_clzll(word);
|
|
58
80
|
#else
|
|
59
81
|
#error must have a working 64-bit integer datatype
|
|
60
|
-
#endif
|
|
61
|
-
|
|
82
|
+
#endif /* HAVE_LONG_INT_64 */
|
|
83
|
+
|
|
84
|
+
#elif defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_ARM64))
|
|
85
|
+
unsigned long result;
|
|
86
|
+
bool non_zero;
|
|
87
|
+
|
|
88
|
+
non_zero = _BitScanReverse64(&result, word);
|
|
89
|
+
Assert(non_zero);
|
|
90
|
+
return (int) result;
|
|
91
|
+
#else
|
|
62
92
|
int shift = 64 - 8;
|
|
63
93
|
|
|
64
94
|
Assert(word != 0);
|
|
@@ -82,6 +112,13 @@ pg_rightmost_one_pos32(uint32 word)
|
|
|
82
112
|
Assert(word != 0);
|
|
83
113
|
|
|
84
114
|
return __builtin_ctz(word);
|
|
115
|
+
#elif defined(_MSC_VER)
|
|
116
|
+
unsigned long result;
|
|
117
|
+
bool non_zero;
|
|
118
|
+
|
|
119
|
+
non_zero = _BitScanForward(&result, word);
|
|
120
|
+
Assert(non_zero);
|
|
121
|
+
return (int) result;
|
|
85
122
|
#else
|
|
86
123
|
int result = 0;
|
|
87
124
|
|
|
@@ -113,8 +150,16 @@ pg_rightmost_one_pos64(uint64 word)
|
|
|
113
150
|
return __builtin_ctzll(word);
|
|
114
151
|
#else
|
|
115
152
|
#error must have a working 64-bit integer datatype
|
|
116
|
-
#endif
|
|
117
|
-
|
|
153
|
+
#endif /* HAVE_LONG_INT_64 */
|
|
154
|
+
|
|
155
|
+
#elif defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_ARM64))
|
|
156
|
+
unsigned long result;
|
|
157
|
+
bool non_zero;
|
|
158
|
+
|
|
159
|
+
non_zero = _BitScanForward64(&result, word);
|
|
160
|
+
Assert(non_zero);
|
|
161
|
+
return (int) result;
|
|
162
|
+
#else
|
|
118
163
|
int result = 0;
|
|
119
164
|
|
|
120
165
|
Assert(word != 0);
|
|
@@ -175,16 +220,6 @@ pg_nextpower2_64(uint64 num)
|
|
|
175
220
|
return ((uint64) 1) << (pg_leftmost_one_pos64(num) + 1);
|
|
176
221
|
}
|
|
177
222
|
|
|
178
|
-
/*
|
|
179
|
-
* pg_nextpower2_size_t
|
|
180
|
-
* Returns the next higher power of 2 above 'num', for a size_t input.
|
|
181
|
-
*/
|
|
182
|
-
#if SIZEOF_SIZE_T == 4
|
|
183
|
-
#define pg_nextpower2_size_t(num) pg_nextpower2_32(num)
|
|
184
|
-
#else
|
|
185
|
-
#define pg_nextpower2_size_t(num) pg_nextpower2_64(num)
|
|
186
|
-
#endif
|
|
187
|
-
|
|
188
223
|
/*
|
|
189
224
|
* pg_prevpower2_32
|
|
190
225
|
* Returns the next lower power of 2 below 'num', or 'num' if it's
|
|
@@ -211,16 +246,6 @@ pg_prevpower2_64(uint64 num)
|
|
|
211
246
|
return ((uint64) 1) << pg_leftmost_one_pos64(num);
|
|
212
247
|
}
|
|
213
248
|
|
|
214
|
-
/*
|
|
215
|
-
* pg_prevpower2_size_t
|
|
216
|
-
* Returns the next lower power of 2 below 'num', for a size_t input.
|
|
217
|
-
*/
|
|
218
|
-
#if SIZEOF_SIZE_T == 4
|
|
219
|
-
#define pg_prevpower2_size_t(num) pg_prevpower2_32(num)
|
|
220
|
-
#else
|
|
221
|
-
#define pg_prevpower2_size_t(num) pg_prevpower2_64(num)
|
|
222
|
-
#endif
|
|
223
|
-
|
|
224
249
|
/*
|
|
225
250
|
* pg_ceil_log2_32
|
|
226
251
|
* Returns equivalent of ceil(log2(num))
|
|
@@ -299,4 +324,16 @@ pg_rotate_left32(uint32 word, int n)
|
|
|
299
324
|
return (word << n) | (word >> (32 - n));
|
|
300
325
|
}
|
|
301
326
|
|
|
327
|
+
/* size_t variants of the above, as required */
|
|
328
|
+
|
|
329
|
+
#if SIZEOF_SIZE_T == 4
|
|
330
|
+
#define pg_leftmost_one_pos_size_t pg_leftmost_one_pos32
|
|
331
|
+
#define pg_nextpower2_size_t pg_nextpower2_32
|
|
332
|
+
#define pg_prevpower2_size_t pg_prevpower2_32
|
|
333
|
+
#else
|
|
334
|
+
#define pg_leftmost_one_pos_size_t pg_leftmost_one_pos64
|
|
335
|
+
#define pg_nextpower2_size_t pg_nextpower2_64
|
|
336
|
+
#define pg_prevpower2_size_t pg_prevpower2_64
|
|
337
|
+
#endif
|
|
338
|
+
|
|
302
339
|
#endif /* PG_BITUTILS_H */
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* return the same. Use caution when using these wrapper macros with signed
|
|
12
12
|
* integers.
|
|
13
13
|
*
|
|
14
|
-
* Copyright (c) 2015-
|
|
14
|
+
* Copyright (c) 2015-2023, PostgreSQL Global Development Group
|
|
15
15
|
*
|
|
16
16
|
* src/include/port/pg_bswap.h
|
|
17
17
|
*
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* EQ_CRC32C(c1, c2)
|
|
24
24
|
* Check for equality of two CRCs.
|
|
25
25
|
*
|
|
26
|
-
* Portions Copyright (c) 1996-
|
|
26
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
27
27
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
28
28
|
*
|
|
29
29
|
* src/include/port/pg_crc32c.h
|