pg_query 4.2.1 → 6.1.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 +61 -0
- data/README.md +7 -9
- data/Rakefile +5 -6
- data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
- data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
- data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/extconf.rb +33 -9
- data/ext/pg_query/include/pg_query.h +28 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +599 -167
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +640 -520
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +6400 -4633
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +433 -343
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1472 -1152
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +154 -124
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1886 -1506
- data/ext/pg_query/include/postgres/access/amapi.h +303 -0
- data/ext/pg_query/include/postgres/access/attmap.h +54 -0
- data/ext/pg_query/include/postgres/access/attnum.h +64 -0
- 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 +62 -0
- data/ext/pg_query/include/postgres/access/commit_ts.h +73 -0
- data/ext/pg_query/include/postgres/access/detoast.h +82 -0
- data/ext/pg_query/include/postgres/access/genam.h +246 -0
- data/ext/pg_query/include/postgres/access/gin.h +91 -0
- data/ext/pg_query/include/postgres/access/htup.h +89 -0
- data/ext/pg_query/include/postgres/access/htup_details.h +811 -0
- data/ext/pg_query/include/postgres/access/itup.h +170 -0
- data/ext/pg_query/include/postgres/access/parallel.h +81 -0
- data/ext/pg_query/include/postgres/access/printtup.h +35 -0
- data/ext/pg_query/include/postgres/access/relation.h +28 -0
- data/ext/pg_query/include/postgres/access/relscan.h +191 -0
- data/ext/pg_query/include/postgres/access/rmgrlist.h +49 -0
- data/ext/pg_query/include/postgres/access/sdir.h +67 -0
- data/ext/pg_query/include/postgres/access/skey.h +151 -0
- data/ext/pg_query/include/postgres/access/slru.h +218 -0
- data/ext/pg_query/include/postgres/access/stratnum.h +85 -0
- data/ext/pg_query/include/postgres/access/sysattr.h +29 -0
- data/ext/pg_query/include/postgres/access/table.h +28 -0
- data/ext/pg_query/include/postgres/access/tableam.h +2110 -0
- data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
- data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
- data/ext/pg_query/include/postgres/access/transam.h +418 -0
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/postgres/access/tupconvert.h +54 -0
- data/ext/pg_query/include/postgres/access/tupdesc.h +154 -0
- data/ext/pg_query/include/postgres/access/tupmacs.h +207 -0
- data/ext/pg_query/include/postgres/access/twophase.h +65 -0
- data/ext/pg_query/include/postgres/access/xact.h +530 -0
- data/ext/pg_query/include/postgres/access/xlog.h +310 -0
- data/ext/pg_query/include/postgres/access/xlog_internal.h +405 -0
- data/ext/pg_query/include/postgres/access/xlogbackup.h +43 -0
- data/ext/pg_query/include/postgres/access/xlogdefs.h +82 -0
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/postgres/access/xlogreader.h +444 -0
- data/ext/pg_query/include/postgres/access/xlogrecord.h +248 -0
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
- data/ext/pg_query/include/postgres/archive/archive_module.h +67 -0
- data/ext/pg_query/include/postgres/c.h +1374 -0
- data/ext/pg_query/include/postgres/catalog/catalog.h +47 -0
- data/ext/pg_query/include/postgres/catalog/catversion.h +62 -0
- data/ext/pg_query/include/postgres/catalog/dependency.h +228 -0
- data/ext/pg_query/include/postgres/catalog/genbki.h +149 -0
- data/ext/pg_query/include/postgres/catalog/index.h +218 -0
- data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
- data/ext/pg_query/include/postgres/catalog/namespace.h +189 -0
- data/ext/pg_query/include/postgres/catalog/objectaccess.h +267 -0
- data/ext/pg_query/include/postgres/catalog/objectaddress.h +93 -0
- data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +182 -0
- data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +78 -0
- data/ext/pg_query/include/postgres/catalog/pg_am.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_am_d.h +47 -0
- data/ext/pg_query/include/postgres/catalog/pg_attribute.h +240 -0
- data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +62 -0
- data/ext/pg_query/include/postgres/catalog/pg_authid.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +60 -0
- data/ext/pg_query/include/postgres/catalog/pg_class.h +235 -0
- data/ext/pg_query/include/postgres/catalog/pg_class_d.h +134 -0
- data/ext/pg_query/include/postgres/catalog/pg_collation.h +106 -0
- data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_constraint.h +278 -0
- data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +74 -0
- data/ext/pg_query/include/postgres/catalog/pg_control.h +260 -0
- data/ext/pg_query/include/postgres/catalog/pg_conversion.h +79 -0
- data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +38 -0
- data/ext/pg_query/include/postgres/catalog/pg_database.h +129 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +53 -0
- data/ext/pg_query/include/postgres/catalog/pg_depend.h +77 -0
- data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +60 -0
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_index.h +92 -0
- data/ext/pg_query/include/postgres/catalog/pg_index_d.h +59 -0
- data/ext/pg_query/include/postgres/catalog/pg_language.h +75 -0
- data/ext/pg_query/include/postgres/catalog/pg_language_d.h +41 -0
- data/ext/pg_query/include/postgres/catalog/pg_namespace.h +67 -0
- data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_opclass.h +91 -0
- data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_operator.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +142 -0
- data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +67 -0
- data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +76 -0
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_proc.h +223 -0
- data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +101 -0
- data/ext/pg_query/include/postgres/catalog/pg_publication.h +161 -0
- data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +38 -0
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +65 -0
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +33 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic.h +288 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +199 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +91 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +45 -0
- data/ext/pg_query/include/postgres/catalog/pg_transform.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_trigger.h +153 -0
- data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +109 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +56 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +62 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +35 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +63 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +37 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +54 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_type.h +407 -0
- data/ext/pg_query/include/postgres/catalog/pg_type_d.h +324 -0
- data/ext/pg_query/include/postgres/catalog/storage.h +50 -0
- data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
- data/ext/pg_query/include/postgres/commands/async.h +49 -0
- data/ext/pg_query/include/postgres/commands/dbcommands.h +37 -0
- data/ext/pg_query/include/postgres/commands/defrem.h +161 -0
- data/ext/pg_query/include/postgres/commands/event_trigger.h +97 -0
- data/ext/pg_query/include/postgres/commands/explain.h +145 -0
- data/ext/pg_query/include/postgres/commands/prepare.h +61 -0
- data/ext/pg_query/include/postgres/commands/tablespace.h +69 -0
- data/ext/pg_query/include/postgres/commands/trigger.h +288 -0
- data/ext/pg_query/include/postgres/commands/user.h +43 -0
- data/ext/pg_query/include/postgres/commands/vacuum.h +388 -0
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/postgres/common/file_perm.h +56 -0
- data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
- data/ext/pg_query/include/postgres/common/hashfn.h +119 -0
- data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
- data/ext/pg_query/include/postgres/common/int.h +512 -0
- data/ext/pg_query/include/postgres/common/keywords.h +29 -0
- data/ext/pg_query/include/postgres/common/kwlookup.h +44 -0
- data/ext/pg_query/include/postgres/common/pg_prng.h +62 -0
- data/ext/pg_query/include/postgres/common/relpath.h +97 -0
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/postgres/common/string.h +44 -0
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +124 -0
- data/ext/pg_query/include/postgres/common/unicode_nonspacing_table.h +326 -0
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5261 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +989 -0
- data/ext/pg_query/include/postgres/datatype/timestamp.h +269 -0
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3310 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +836 -0
- data/ext/pg_query/include/postgres/executor/execdesc.h +70 -0
- data/ext/pg_query/include/postgres/executor/executor.h +681 -0
- data/ext/pg_query/include/postgres/executor/functions.h +56 -0
- data/ext/pg_query/include/postgres/executor/instrument.h +120 -0
- data/ext/pg_query/include/postgres/executor/spi.h +207 -0
- data/ext/pg_query/include/postgres/executor/tablefunc.h +67 -0
- data/ext/pg_query/include/postgres/executor/tuptable.h +523 -0
- data/ext/pg_query/include/postgres/fmgr.h +800 -0
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/postgres/funcapi.h +360 -0
- data/ext/pg_query/include/postgres/gram.h +1168 -0
- data/ext/pg_query/include/postgres/gramparse.h +75 -0
- data/ext/pg_query/include/postgres/jit/jit.h +106 -0
- data/ext/pg_query/include/postgres/kwlist_d.h +1164 -0
- data/ext/pg_query/include/postgres/lib/dshash.h +130 -0
- data/ext/pg_query/include/postgres/lib/ilist.h +1159 -0
- data/ext/pg_query/include/postgres/lib/pairingheap.h +102 -0
- data/ext/pg_query/include/postgres/lib/simplehash.h +1206 -0
- data/ext/pg_query/include/postgres/lib/sort_template.h +445 -0
- data/ext/pg_query/include/postgres/lib/stringinfo.h +243 -0
- data/ext/pg_query/include/postgres/libpq/auth.h +37 -0
- data/ext/pg_query/include/postgres/libpq/crypt.h +47 -0
- data/ext/pg_query/include/postgres/libpq/hba.h +186 -0
- data/ext/pg_query/include/postgres/libpq/libpq-be.h +361 -0
- data/ext/pg_query/include/postgres/libpq/libpq.h +143 -0
- data/ext/pg_query/include/postgres/libpq/pqcomm.h +169 -0
- data/ext/pg_query/include/postgres/libpq/pqformat.h +209 -0
- data/ext/pg_query/include/postgres/libpq/pqsignal.h +54 -0
- data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
- data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
- data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
- data/ext/pg_query/include/postgres/mb/pg_wchar.h +793 -0
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +24 -0
- data/ext/pg_query/include/postgres/miscadmin.h +527 -0
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +140 -0
- data/ext/pg_query/include/postgres/nodes/execnodes.h +2855 -0
- data/ext/pg_query/include/postgres/nodes/extensible.h +164 -0
- data/ext/pg_query/include/postgres/nodes/lockoptions.h +61 -0
- data/ext/pg_query/include/postgres/nodes/makefuncs.h +127 -0
- data/ext/pg_query/include/postgres/nodes/memnodes.h +152 -0
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +222 -0
- data/ext/pg_query/include/postgres/nodes/nodes.h +435 -0
- data/ext/pg_query/include/postgres/nodes/nodetags.h +491 -0
- data/ext/pg_query/include/postgres/nodes/params.h +170 -0
- data/ext/pg_query/include/postgres/nodes/parsenodes.h +4233 -0
- data/ext/pg_query/include/postgres/nodes/pathnodes.h +3438 -0
- data/ext/pg_query/include/postgres/nodes/pg_list.h +686 -0
- data/ext/pg_query/include/postgres/nodes/plannodes.h +1593 -0
- data/ext/pg_query/include/postgres/nodes/primnodes.h +2339 -0
- data/ext/pg_query/include/postgres/nodes/print.h +34 -0
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
- data/ext/pg_query/include/postgres/nodes/replnodes.h +132 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/postgres/nodes/tidbitmap.h +75 -0
- data/ext/pg_query/include/postgres/nodes/value.h +90 -0
- data/ext/pg_query/include/postgres/optimizer/cost.h +216 -0
- data/ext/pg_query/include/postgres/optimizer/geqo.h +90 -0
- data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +45 -0
- data/ext/pg_query/include/postgres/optimizer/optimizer.h +205 -0
- data/ext/pg_query/include/postgres/optimizer/paths.h +271 -0
- data/ext/pg_query/include/postgres/optimizer/planmain.h +123 -0
- data/ext/pg_query/include/postgres/parser/analyze.h +66 -0
- data/ext/pg_query/include/postgres/parser/kwlist.h +518 -0
- data/ext/pg_query/include/postgres/parser/parse_agg.h +65 -0
- data/ext/pg_query/include/postgres/parser/parse_coerce.h +105 -0
- data/ext/pg_query/include/postgres/parser/parse_expr.h +25 -0
- data/ext/pg_query/include/postgres/parser/parse_func.h +74 -0
- data/ext/pg_query/include/postgres/parser/parse_node.h +358 -0
- data/ext/pg_query/include/postgres/parser/parse_oper.h +68 -0
- data/ext/pg_query/include/postgres/parser/parse_relation.h +129 -0
- data/ext/pg_query/include/postgres/parser/parse_type.h +61 -0
- data/ext/pg_query/include/postgres/parser/parser.h +68 -0
- data/ext/pg_query/include/postgres/parser/parsetree.h +61 -0
- data/ext/pg_query/include/postgres/parser/scanner.h +152 -0
- data/ext/pg_query/include/postgres/parser/scansup.h +27 -0
- data/ext/pg_query/include/postgres/partitioning/partdefs.h +26 -0
- data/ext/pg_query/include/postgres/pg_config.h +985 -0
- data/ext/pg_query/include/postgres/pg_config_manual.h +385 -0
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/postgres/pg_getopt.h +56 -0
- data/ext/pg_query/include/postgres/pg_trace.h +17 -0
- data/ext/pg_query/include/postgres/pgstat.h +780 -0
- data/ext/pg_query/include/postgres/pgtime.h +94 -0
- data/ext/pg_query/include/postgres/pl_gram.h +385 -0
- data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +52 -0
- data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +114 -0
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +112 -0
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +246 -0
- data/ext/pg_query/include/postgres/plerrcodes.h +998 -0
- data/ext/pg_query/include/postgres/plpgsql.h +1342 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +32 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +256 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +254 -0
- data/ext/pg_query/include/postgres/port/atomics/fallback.h +170 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +323 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +119 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +121 -0
- data/ext/pg_query/include/postgres/port/atomics/generic.h +437 -0
- data/ext/pg_query/include/postgres/port/atomics.h +606 -0
- data/ext/pg_query/include/postgres/port/pg_bitutils.h +421 -0
- data/ext/pg_query/include/postgres/port/pg_bswap.h +161 -0
- data/ext/pg_query/include/postgres/port/pg_crc32c.h +110 -0
- data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
- data/ext/pg_query/include/postgres/port/simd.h +422 -0
- data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
- data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +34 -0
- data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
- data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
- data/ext/pg_query/include/postgres/port/win32.h +59 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +582 -0
- data/ext/pg_query/include/postgres/port.h +555 -0
- data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
- data/ext/pg_query/include/postgres/postgres.h +579 -0
- data/ext/pg_query/include/postgres/postgres_ext.h +73 -0
- data/ext/pg_query/include/postgres/postmaster/autovacuum.h +69 -0
- data/ext/pg_query/include/postgres/postmaster/bgworker.h +164 -0
- data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +60 -0
- data/ext/pg_query/include/postgres/postmaster/bgwriter.h +45 -0
- data/ext/pg_query/include/postgres/postmaster/interrupt.h +32 -0
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
- data/ext/pg_query/include/postgres/postmaster/postmaster.h +101 -0
- data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
- data/ext/pg_query/include/postgres/postmaster/syslogger.h +101 -0
- data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
- data/ext/pg_query/include/postgres/postmaster/walwriter.h +23 -0
- data/ext/pg_query/include/postgres/regex/regex.h +272 -0
- data/ext/pg_query/include/postgres/replication/logicallauncher.h +34 -0
- data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
- data/ext/pg_query/include/postgres/replication/logicalworker.h +33 -0
- data/ext/pg_query/include/postgres/replication/origin.h +73 -0
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +734 -0
- data/ext/pg_query/include/postgres/replication/slot.h +289 -0
- data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
- data/ext/pg_query/include/postgres/replication/syncrep.h +109 -0
- data/ext/pg_query/include/postgres/replication/walreceiver.h +504 -0
- data/ext/pg_query/include/postgres/replication/walsender.h +76 -0
- data/ext/pg_query/include/postgres/rewrite/prs2lock.h +46 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +41 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +96 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +26 -0
- data/ext/pg_query/include/postgres/storage/block.h +108 -0
- data/ext/pg_query/include/postgres/storage/buf.h +46 -0
- data/ext/pg_query/include/postgres/storage/bufmgr.h +411 -0
- data/ext/pg_query/include/postgres/storage/bufpage.h +510 -0
- data/ext/pg_query/include/postgres/storage/condition_variable.h +73 -0
- data/ext/pg_query/include/postgres/storage/dsm.h +61 -0
- data/ext/pg_query/include/postgres/storage/dsm_impl.h +79 -0
- data/ext/pg_query/include/postgres/storage/fd.h +219 -0
- data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
- data/ext/pg_query/include/postgres/storage/ipc.h +87 -0
- data/ext/pg_query/include/postgres/storage/item.h +19 -0
- data/ext/pg_query/include/postgres/storage/itemid.h +184 -0
- data/ext/pg_query/include/postgres/storage/itemptr.h +245 -0
- data/ext/pg_query/include/postgres/storage/large_object.h +100 -0
- data/ext/pg_query/include/postgres/storage/latch.h +196 -0
- data/ext/pg_query/include/postgres/storage/lmgr.h +126 -0
- data/ext/pg_query/include/postgres/storage/lock.h +624 -0
- data/ext/pg_query/include/postgres/storage/lockdefs.h +61 -0
- data/ext/pg_query/include/postgres/storage/lwlock.h +228 -0
- data/ext/pg_query/include/postgres/storage/lwlocknames.h +47 -0
- data/ext/pg_query/include/postgres/storage/off.h +57 -0
- data/ext/pg_query/include/postgres/storage/pg_sema.h +61 -0
- data/ext/pg_query/include/postgres/storage/pg_shmem.h +93 -0
- data/ext/pg_query/include/postgres/storage/pmsignal.h +105 -0
- data/ext/pg_query/include/postgres/storage/predicate.h +83 -0
- data/ext/pg_query/include/postgres/storage/proc.h +488 -0
- data/ext/pg_query/include/postgres/storage/procarray.h +103 -0
- data/ext/pg_query/include/postgres/storage/proclist_types.h +53 -0
- data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
- data/ext/pg_query/include/postgres/storage/procsignal.h +75 -0
- data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +100 -0
- data/ext/pg_query/include/postgres/storage/s_lock.h +847 -0
- data/ext/pg_query/include/postgres/storage/sharedfileset.h +37 -0
- data/ext/pg_query/include/postgres/storage/shm_mq.h +86 -0
- data/ext/pg_query/include/postgres/storage/shm_toc.h +58 -0
- data/ext/pg_query/include/postgres/storage/shmem.h +59 -0
- data/ext/pg_query/include/postgres/storage/sinval.h +153 -0
- data/ext/pg_query/include/postgres/storage/smgr.h +130 -0
- data/ext/pg_query/include/postgres/storage/spin.h +77 -0
- data/ext/pg_query/include/postgres/storage/standby.h +109 -0
- data/ext/pg_query/include/postgres/storage/standbydefs.h +74 -0
- data/ext/pg_query/include/postgres/storage/sync.h +66 -0
- data/ext/pg_query/include/postgres/tcop/cmdtag.h +62 -0
- data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +219 -0
- data/ext/pg_query/include/postgres/tcop/deparse_utility.h +108 -0
- data/ext/pg_query/include/postgres/tcop/dest.h +148 -0
- data/ext/pg_query/include/postgres/tcop/fastpath.h +20 -0
- data/ext/pg_query/include/postgres/tcop/pquery.h +51 -0
- data/ext/pg_query/include/postgres/tcop/tcopprot.h +98 -0
- data/ext/pg_query/include/postgres/tcop/utility.h +112 -0
- data/ext/pg_query/include/postgres/tsearch/ts_cache.h +96 -0
- data/ext/pg_query/include/postgres/utils/acl.h +290 -0
- data/ext/pg_query/include/postgres/utils/aclchk_internal.h +45 -0
- data/ext/pg_query/include/postgres/utils/array.h +481 -0
- data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
- data/ext/pg_query/include/postgres/utils/backend_progress.h +46 -0
- data/ext/pg_query/include/postgres/utils/backend_status.h +340 -0
- data/ext/pg_query/include/postgres/utils/builtins.h +139 -0
- data/ext/pg_query/include/postgres/utils/bytea.h +28 -0
- data/ext/pg_query/include/postgres/utils/catcache.h +231 -0
- data/ext/pg_query/include/postgres/utils/date.h +118 -0
- data/ext/pg_query/include/postgres/utils/datetime.h +367 -0
- data/ext/pg_query/include/postgres/utils/datum.h +76 -0
- data/ext/pg_query/include/postgres/utils/dsa.h +166 -0
- data/ext/pg_query/include/postgres/utils/elog.h +540 -0
- data/ext/pg_query/include/postgres/utils/errcodes.h +352 -0
- data/ext/pg_query/include/postgres/utils/expandeddatum.h +170 -0
- data/ext/pg_query/include/postgres/utils/expandedrecord.h +241 -0
- data/ext/pg_query/include/postgres/utils/float.h +357 -0
- data/ext/pg_query/include/postgres/utils/fmgroids.h +3347 -0
- data/ext/pg_query/include/postgres/utils/fmgrprotos.h +2904 -0
- data/ext/pg_query/include/postgres/utils/fmgrtab.h +49 -0
- data/ext/pg_query/include/postgres/utils/guc.h +456 -0
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +184 -0
- data/ext/pg_query/include/postgres/utils/guc_tables.h +323 -0
- data/ext/pg_query/include/postgres/utils/hsearch.h +153 -0
- data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
- data/ext/pg_query/include/postgres/utils/inval.h +68 -0
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/postgres/utils/lsyscache.h +215 -0
- data/ext/pg_query/include/postgres/utils/memdebug.h +82 -0
- data/ext/pg_query/include/postgres/utils/memutils.h +193 -0
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +176 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +253 -0
- data/ext/pg_query/include/postgres/utils/numeric.h +110 -0
- data/ext/pg_query/include/postgres/utils/palloc.h +151 -0
- data/ext/pg_query/include/postgres/utils/partcache.h +103 -0
- data/ext/pg_query/include/postgres/utils/pg_locale.h +136 -0
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +827 -0
- data/ext/pg_query/include/postgres/utils/plancache.h +238 -0
- data/ext/pg_query/include/postgres/utils/portal.h +252 -0
- data/ext/pg_query/include/postgres/utils/probes.h +114 -0
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/postgres/utils/queryenvironment.h +74 -0
- data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
- data/ext/pg_query/include/postgres/utils/rel.h +711 -0
- data/ext/pg_query/include/postgres/utils/relcache.h +155 -0
- data/ext/pg_query/include/postgres/utils/reltrigger.h +81 -0
- data/ext/pg_query/include/postgres/utils/resowner.h +167 -0
- data/ext/pg_query/include/postgres/utils/ruleutils.h +52 -0
- data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +61 -0
- data/ext/pg_query/include/postgres/utils/snapmgr.h +130 -0
- data/ext/pg_query/include/postgres/utils/snapshot.h +219 -0
- data/ext/pg_query/include/postgres/utils/sortsupport.h +391 -0
- data/ext/pg_query/include/postgres/utils/syscache.h +136 -0
- data/ext/pg_query/include/postgres/utils/timeout.h +96 -0
- data/ext/pg_query/include/postgres/utils/timestamp.h +147 -0
- data/ext/pg_query/include/postgres/utils/tuplesort.h +472 -0
- data/ext/pg_query/include/postgres/utils/tuplestore.h +88 -0
- data/ext/pg_query/include/postgres/utils/typcache.h +210 -0
- data/ext/pg_query/include/postgres/utils/varlena.h +53 -0
- data/ext/pg_query/include/postgres/utils/wait_event.h +108 -0
- data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
- data/ext/pg_query/include/postgres/utils/xml.h +94 -0
- data/ext/pg_query/include/postgres/varatt.h +358 -0
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7723 -6368
- data/ext/pg_query/include/protobuf/pg_query.pb.h +120022 -87031
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +22595 -17738
- data/ext/pg_query/pg_query_deparse.c +1 -10635
- data/ext/pg_query/pg_query_fingerprint.c +12 -8
- 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 +43 -2
- data/ext/pg_query/pg_query_outfuncs_json.c +9 -1
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +19 -18
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +3 -2
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_scan.c +2 -2
- data/ext/pg_query/pg_query_split.c +3 -3
- data/ext/pg_query/postgres_deparse.c +11496 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +243 -63
- 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 +140 -156
- 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 +16 -8
- data/ext/pg_query/src_backend_nodes_makefuncs.c +134 -1
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +391 -133
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +43710 -39953
- data/ext/pg_query/src_backend_parser_parser.c +34 -8
- data/ext/pg_query/src_backend_parser_scan.c +6971 -3373
- 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 +99 -96
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
- data/ext/pg_query/src_backend_utils_adt_datum.c +2 -2
- 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 +488 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +177 -30
- data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
- data/ext/pg_query/src_backend_utils_error_elog.c +397 -270
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +36 -2
- data/ext/pg_query/src_backend_utils_init_globals.c +20 -5
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +31 -84
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +502 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +166 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +704 -497
- data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1115 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +637 -233
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1079 -0
- data/ext/pg_query/src_common_encnames.c +46 -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 +586 -517
- 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 +21 -4
- data/ext/pg_query/src_common_wchar.c +100 -116
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +829 -763
- 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 +48 -46
- data/ext/pg_query/src_port_pg_bitutils.c +251 -32
- data/ext/pg_query/src_port_pgstrcasecmp.c +57 -1
- data/ext/pg_query/src_port_snprintf.c +20 -27
- data/ext/pg_query/src_port_strerror.c +1 -3
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/fingerprint.rb +5 -8
- data/lib/pg_query/node.rb +16 -11
- data/lib/pg_query/param_refs.rb +2 -2
- data/lib/pg_query/parse.rb +6 -8
- data/lib/pg_query/parse_error.rb +1 -0
- data/lib/pg_query/pg_query_pb.rb +173 -3196
- data/lib/pg_query/scan.rb +1 -0
- data/lib/pg_query/treewalker.rb +52 -11
- data/lib/pg_query/truncate.rb +18 -20
- data/lib/pg_query/version.rb +1 -1
- metadata +443 -442
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/amapi.h +0 -290
- data/ext/pg_query/include/access/attmap.h +0 -52
- data/ext/pg_query/include/access/attnum.h +0 -64
- data/ext/pg_query/include/access/clog.h +0 -63
- data/ext/pg_query/include/access/commit_ts.h +0 -74
- data/ext/pg_query/include/access/detoast.h +0 -82
- data/ext/pg_query/include/access/genam.h +0 -231
- data/ext/pg_query/include/access/gin.h +0 -78
- data/ext/pg_query/include/access/htup.h +0 -89
- data/ext/pg_query/include/access/htup_details.h +0 -807
- data/ext/pg_query/include/access/itup.h +0 -167
- data/ext/pg_query/include/access/parallel.h +0 -82
- data/ext/pg_query/include/access/printtup.h +0 -35
- data/ext/pg_query/include/access/relation.h +0 -28
- data/ext/pg_query/include/access/relscan.h +0 -191
- data/ext/pg_query/include/access/rmgrlist.h +0 -49
- data/ext/pg_query/include/access/sdir.h +0 -58
- data/ext/pg_query/include/access/skey.h +0 -151
- data/ext/pg_query/include/access/stratnum.h +0 -85
- data/ext/pg_query/include/access/sysattr.h +0 -29
- data/ext/pg_query/include/access/table.h +0 -28
- data/ext/pg_query/include/access/tableam.h +0 -2077
- data/ext/pg_query/include/access/toast_compression.h +0 -73
- data/ext/pg_query/include/access/transam.h +0 -375
- data/ext/pg_query/include/access/tupconvert.h +0 -51
- data/ext/pg_query/include/access/tupdesc.h +0 -154
- data/ext/pg_query/include/access/tupmacs.h +0 -247
- data/ext/pg_query/include/access/twophase.h +0 -65
- data/ext/pg_query/include/access/xact.h +0 -523
- data/ext/pg_query/include/access/xlog.h +0 -303
- data/ext/pg_query/include/access/xlog_internal.h +0 -366
- data/ext/pg_query/include/access/xlogdefs.h +0 -101
- data/ext/pg_query/include/access/xlogprefetcher.h +0 -55
- data/ext/pg_query/include/access/xlogreader.h +0 -443
- data/ext/pg_query/include/access/xlogrecord.h +0 -236
- data/ext/pg_query/include/access/xlogrecovery.h +0 -157
- data/ext/pg_query/include/c.h +0 -1391
- data/ext/pg_query/include/catalog/catalog.h +0 -44
- data/ext/pg_query/include/catalog/catversion.h +0 -58
- data/ext/pg_query/include/catalog/dependency.h +0 -269
- data/ext/pg_query/include/catalog/genbki.h +0 -142
- data/ext/pg_query/include/catalog/index.h +0 -214
- data/ext/pg_query/include/catalog/indexing.h +0 -54
- data/ext/pg_query/include/catalog/namespace.h +0 -190
- data/ext/pg_query/include/catalog/objectaccess.h +0 -265
- data/ext/pg_query/include/catalog/objectaddress.h +0 -89
- data/ext/pg_query/include/catalog/pg_aggregate.h +0 -180
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -78
- data/ext/pg_query/include/catalog/pg_am.h +0 -63
- data/ext/pg_query/include/catalog/pg_am_d.h +0 -47
- data/ext/pg_query/include/catalog/pg_attribute.h +0 -221
- data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -62
- data/ext/pg_query/include/catalog/pg_authid.h +0 -63
- data/ext/pg_query/include/catalog/pg_authid_d.h +0 -57
- data/ext/pg_query/include/catalog/pg_class.h +0 -230
- data/ext/pg_query/include/catalog/pg_class_d.h +0 -132
- data/ext/pg_query/include/catalog/pg_collation.h +0 -98
- data/ext/pg_query/include/catalog/pg_collation_d.h +0 -62
- data/ext/pg_query/include/catalog/pg_constraint.h +0 -273
- data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -73
- data/ext/pg_query/include/catalog/pg_control.h +0 -250
- data/ext/pg_query/include/catalog/pg_conversion.h +0 -75
- data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -38
- data/ext/pg_query/include/catalog/pg_depend.h +0 -77
- data/ext/pg_query/include/catalog/pg_depend_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -57
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_index.h +0 -90
- data/ext/pg_query/include/catalog/pg_index_d.h +0 -59
- data/ext/pg_query/include/catalog/pg_language.h +0 -72
- data/ext/pg_query/include/catalog/pg_language_d.h +0 -41
- data/ext/pg_query/include/catalog/pg_namespace.h +0 -64
- data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_opclass.h +0 -88
- data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -51
- data/ext/pg_query/include/catalog/pg_operator.h +0 -107
- data/ext/pg_query/include/catalog/pg_operator_d.h +0 -142
- data/ext/pg_query/include/catalog/pg_opfamily.h +0 -63
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -49
- 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/catalog/pg_partitioned_table.h +0 -74
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_proc.h +0 -220
- data/ext/pg_query/include/catalog/pg_proc_d.h +0 -101
- data/ext/pg_query/include/catalog/pg_publication.h +0 -161
- data/ext/pg_query/include/catalog/pg_publication_d.h +0 -38
- data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -62
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -33
- data/ext/pg_query/include/catalog/pg_statistic.h +0 -282
- data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -195
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -88
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -45
- data/ext/pg_query/include/catalog/pg_transform.h +0 -48
- data/ext/pg_query/include/catalog/pg_transform_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_trigger.h +0 -153
- data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -109
- data/ext/pg_query/include/catalog/pg_ts_config.h +0 -53
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -59
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -60
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -37
- data/ext/pg_query/include/catalog/pg_ts_template.h +0 -51
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_type.h +0 -404
- data/ext/pg_query/include/catalog/pg_type_d.h +0 -324
- data/ext/pg_query/include/catalog/storage.h +0 -50
- data/ext/pg_query/include/commands/async.h +0 -53
- data/ext/pg_query/include/commands/dbcommands.h +0 -36
- data/ext/pg_query/include/commands/defrem.h +0 -160
- data/ext/pg_query/include/commands/event_trigger.h +0 -88
- data/ext/pg_query/include/commands/explain.h +0 -127
- data/ext/pg_query/include/commands/prepare.h +0 -61
- data/ext/pg_query/include/commands/tablespace.h +0 -69
- data/ext/pg_query/include/commands/trigger.h +0 -287
- data/ext/pg_query/include/commands/user.h +0 -37
- data/ext/pg_query/include/commands/vacuum.h +0 -340
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/file_perm.h +0 -56
- data/ext/pg_query/include/common/hashfn.h +0 -104
- data/ext/pg_query/include/common/ip.h +0 -31
- data/ext/pg_query/include/common/keywords.h +0 -29
- data/ext/pg_query/include/common/kwlookup.h +0 -44
- data/ext/pg_query/include/common/pg_prng.h +0 -60
- data/ext/pg_query/include/common/relpath.h +0 -90
- data/ext/pg_query/include/common/string.h +0 -42
- data/ext/pg_query/include/common/unicode_combining_table.h +0 -308
- data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +0 -125
- data/ext/pg_query/include/datatype/timestamp.h +0 -236
- data/ext/pg_query/include/executor/execdesc.h +0 -70
- data/ext/pg_query/include/executor/executor.h +0 -663
- data/ext/pg_query/include/executor/functions.h +0 -55
- data/ext/pg_query/include/executor/instrument.h +0 -118
- data/ext/pg_query/include/executor/spi.h +0 -213
- data/ext/pg_query/include/executor/tablefunc.h +0 -67
- data/ext/pg_query/include/executor/tuptable.h +0 -487
- data/ext/pg_query/include/fmgr.h +0 -781
- data/ext/pg_query/include/funcapi.h +0 -360
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/jit/jit.h +0 -105
- data/ext/pg_query/include/kwlist_d.h +0 -1095
- data/ext/pg_query/include/lib/dshash.h +0 -112
- data/ext/pg_query/include/lib/ilist.h +0 -746
- data/ext/pg_query/include/lib/pairingheap.h +0 -102
- data/ext/pg_query/include/lib/simplehash.h +0 -1184
- data/ext/pg_query/include/lib/sort_template.h +0 -432
- data/ext/pg_query/include/lib/stringinfo.h +0 -161
- data/ext/pg_query/include/libpq/auth.h +0 -31
- data/ext/pg_query/include/libpq/crypt.h +0 -47
- data/ext/pg_query/include/libpq/hba.h +0 -179
- data/ext/pg_query/include/libpq/libpq-be.h +0 -343
- data/ext/pg_query/include/libpq/libpq.h +0 -144
- data/ext/pg_query/include/libpq/pqcomm.h +0 -194
- data/ext/pg_query/include/libpq/pqformat.h +0 -210
- data/ext/pg_query/include/libpq/pqsignal.h +0 -42
- data/ext/pg_query/include/mb/pg_wchar.h +0 -755
- data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
- data/ext/pg_query/include/miscadmin.h +0 -495
- data/ext/pg_query/include/nodes/bitmapset.h +0 -122
- data/ext/pg_query/include/nodes/execnodes.h +0 -2715
- data/ext/pg_query/include/nodes/extensible.h +0 -162
- data/ext/pg_query/include/nodes/lockoptions.h +0 -61
- data/ext/pg_query/include/nodes/makefuncs.h +0 -109
- data/ext/pg_query/include/nodes/memnodes.h +0 -110
- data/ext/pg_query/include/nodes/nodeFuncs.h +0 -162
- data/ext/pg_query/include/nodes/nodes.h +0 -861
- data/ext/pg_query/include/nodes/params.h +0 -170
- data/ext/pg_query/include/nodes/parsenodes.h +0 -3812
- data/ext/pg_query/include/nodes/pathnodes.h +0 -2734
- data/ext/pg_query/include/nodes/pg_list.h +0 -612
- data/ext/pg_query/include/nodes/plannodes.h +0 -1349
- data/ext/pg_query/include/nodes/primnodes.h +0 -1593
- data/ext/pg_query/include/nodes/print.h +0 -34
- data/ext/pg_query/include/nodes/tidbitmap.h +0 -75
- data/ext/pg_query/include/nodes/value.h +0 -80
- data/ext/pg_query/include/optimizer/cost.h +0 -213
- data/ext/pg_query/include/optimizer/geqo.h +0 -90
- data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
- data/ext/pg_query/include/optimizer/optimizer.h +0 -202
- data/ext/pg_query/include/optimizer/paths.h +0 -257
- data/ext/pg_query/include/optimizer/planmain.h +0 -120
- data/ext/pg_query/include/parser/analyze.h +0 -63
- data/ext/pg_query/include/parser/gram.h +0 -1101
- data/ext/pg_query/include/parser/gramparse.h +0 -75
- data/ext/pg_query/include/parser/kwlist.h +0 -487
- data/ext/pg_query/include/parser/parse_agg.h +0 -63
- data/ext/pg_query/include/parser/parse_coerce.h +0 -100
- data/ext/pg_query/include/parser/parse_expr.h +0 -25
- data/ext/pg_query/include/parser/parse_func.h +0 -74
- data/ext/pg_query/include/parser/parse_node.h +0 -339
- data/ext/pg_query/include/parser/parse_oper.h +0 -65
- data/ext/pg_query/include/parser/parse_relation.h +0 -124
- data/ext/pg_query/include/parser/parse_type.h +0 -60
- data/ext/pg_query/include/parser/parser.h +0 -68
- data/ext/pg_query/include/parser/parsetree.h +0 -61
- data/ext/pg_query/include/parser/scanner.h +0 -152
- data/ext/pg_query/include/parser/scansup.h +0 -27
- data/ext/pg_query/include/partitioning/partdefs.h +0 -26
- data/ext/pg_query/include/pg_config.h +0 -1037
- data/ext/pg_query/include/pg_config_manual.h +0 -410
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/pg_getopt.h +0 -56
- data/ext/pg_query/include/pg_trace.h +0 -17
- data/ext/pg_query/include/pgstat.h +0 -699
- data/ext/pg_query/include/pgtime.h +0 -94
- data/ext/pg_query/include/pl_gram.h +0 -383
- data/ext/pg_query/include/pl_reserved_kwlist.h +0 -52
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +0 -114
- data/ext/pg_query/include/pl_unreserved_kwlist.h +0 -111
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +0 -244
- data/ext/pg_query/include/plerrcodes.h +0 -998
- data/ext/pg_query/include/plpgsql.h +0 -1345
- data/ext/pg_query/include/port/atomics/arch-arm.h +0 -32
- data/ext/pg_query/include/port/atomics/arch-ppc.h +0 -254
- data/ext/pg_query/include/port/atomics/arch-x86.h +0 -252
- data/ext/pg_query/include/port/atomics/fallback.h +0 -170
- data/ext/pg_query/include/port/atomics/generic-gcc.h +0 -286
- data/ext/pg_query/include/port/atomics/generic.h +0 -401
- data/ext/pg_query/include/port/atomics.h +0 -524
- data/ext/pg_query/include/port/pg_bitutils.h +0 -302
- data/ext/pg_query/include/port/pg_bswap.h +0 -161
- data/ext/pg_query/include/port/pg_crc32c.h +0 -101
- data/ext/pg_query/include/port.h +0 -553
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postgres.h +0 -808
- data/ext/pg_query/include/postgres_ext.h +0 -74
- data/ext/pg_query/include/postmaster/autovacuum.h +0 -83
- data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
- data/ext/pg_query/include/postmaster/bgworker.h +0 -162
- data/ext/pg_query/include/postmaster/bgworker_internals.h +0 -64
- data/ext/pg_query/include/postmaster/bgwriter.h +0 -45
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/interrupt.h +0 -32
- data/ext/pg_query/include/postmaster/pgarch.h +0 -73
- data/ext/pg_query/include/postmaster/postmaster.h +0 -78
- data/ext/pg_query/include/postmaster/startup.h +0 -39
- data/ext/pg_query/include/postmaster/syslogger.h +0 -103
- data/ext/pg_query/include/postmaster/walwriter.h +0 -21
- data/ext/pg_query/include/regex/regex.h +0 -186
- data/ext/pg_query/include/replication/logicallauncher.h +0 -29
- data/ext/pg_query/include/replication/logicalproto.h +0 -254
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/replication/origin.h +0 -73
- data/ext/pg_query/include/replication/reorderbuffer.h +0 -685
- data/ext/pg_query/include/replication/slot.h +0 -230
- data/ext/pg_query/include/replication/syncrep.h +0 -115
- data/ext/pg_query/include/replication/walreceiver.h +0 -472
- data/ext/pg_query/include/replication/walsender.h +0 -74
- data/ext/pg_query/include/rewrite/prs2lock.h +0 -46
- data/ext/pg_query/include/rewrite/rewriteHandler.h +0 -38
- data/ext/pg_query/include/rewrite/rewriteManip.h +0 -87
- data/ext/pg_query/include/rewrite/rewriteSupport.h +0 -26
- data/ext/pg_query/include/storage/backendid.h +0 -37
- data/ext/pg_query/include/storage/block.h +0 -115
- data/ext/pg_query/include/storage/buf.h +0 -46
- data/ext/pg_query/include/storage/bufmgr.h +0 -297
- data/ext/pg_query/include/storage/bufpage.h +0 -457
- data/ext/pg_query/include/storage/condition_variable.h +0 -73
- data/ext/pg_query/include/storage/dsm.h +0 -64
- data/ext/pg_query/include/storage/dsm_impl.h +0 -76
- data/ext/pg_query/include/storage/fd.h +0 -198
- data/ext/pg_query/include/storage/fileset.h +0 -40
- data/ext/pg_query/include/storage/ipc.h +0 -84
- data/ext/pg_query/include/storage/item.h +0 -19
- data/ext/pg_query/include/storage/itemid.h +0 -184
- data/ext/pg_query/include/storage/itemptr.h +0 -208
- data/ext/pg_query/include/storage/large_object.h +0 -100
- data/ext/pg_query/include/storage/latch.h +0 -186
- data/ext/pg_query/include/storage/lmgr.h +0 -115
- data/ext/pg_query/include/storage/lock.h +0 -616
- data/ext/pg_query/include/storage/lockdefs.h +0 -59
- data/ext/pg_query/include/storage/lwlock.h +0 -206
- data/ext/pg_query/include/storage/lwlocknames.h +0 -50
- data/ext/pg_query/include/storage/off.h +0 -57
- data/ext/pg_query/include/storage/pg_sema.h +0 -61
- data/ext/pg_query/include/storage/pg_shmem.h +0 -92
- data/ext/pg_query/include/storage/pmsignal.h +0 -105
- data/ext/pg_query/include/storage/predicate.h +0 -87
- data/ext/pg_query/include/storage/proc.h +0 -461
- data/ext/pg_query/include/storage/procarray.h +0 -98
- data/ext/pg_query/include/storage/proclist_types.h +0 -51
- data/ext/pg_query/include/storage/procsignal.h +0 -71
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/storage/s_lock.h +0 -1110
- data/ext/pg_query/include/storage/sharedfileset.h +0 -37
- data/ext/pg_query/include/storage/shm_mq.h +0 -86
- data/ext/pg_query/include/storage/shm_toc.h +0 -58
- data/ext/pg_query/include/storage/shmem.h +0 -81
- data/ext/pg_query/include/storage/sinval.h +0 -153
- data/ext/pg_query/include/storage/sinvaladt.h +0 -43
- data/ext/pg_query/include/storage/smgr.h +0 -111
- data/ext/pg_query/include/storage/spin.h +0 -77
- data/ext/pg_query/include/storage/standby.h +0 -98
- data/ext/pg_query/include/storage/standbydefs.h +0 -74
- data/ext/pg_query/include/storage/sync.h +0 -66
- data/ext/pg_query/include/tcop/cmdtag.h +0 -58
- data/ext/pg_query/include/tcop/cmdtaglist.h +0 -218
- data/ext/pg_query/include/tcop/deparse_utility.h +0 -108
- data/ext/pg_query/include/tcop/dest.h +0 -149
- data/ext/pg_query/include/tcop/fastpath.h +0 -20
- data/ext/pg_query/include/tcop/pquery.h +0 -51
- data/ext/pg_query/include/tcop/tcopprot.h +0 -97
- data/ext/pg_query/include/tcop/utility.h +0 -112
- data/ext/pg_query/include/tsearch/ts_cache.h +0 -98
- data/ext/pg_query/include/utils/acl.h +0 -333
- data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
- data/ext/pg_query/include/utils/array.h +0 -464
- data/ext/pg_query/include/utils/backend_progress.h +0 -44
- data/ext/pg_query/include/utils/backend_status.h +0 -321
- data/ext/pg_query/include/utils/builtins.h +0 -127
- data/ext/pg_query/include/utils/bytea.h +0 -28
- data/ext/pg_query/include/utils/catcache.h +0 -231
- data/ext/pg_query/include/utils/date.h +0 -90
- data/ext/pg_query/include/utils/datetime.h +0 -344
- data/ext/pg_query/include/utils/datum.h +0 -76
- data/ext/pg_query/include/utils/dsa.h +0 -123
- data/ext/pg_query/include/utils/dynahash.h +0 -20
- data/ext/pg_query/include/utils/elog.h +0 -470
- data/ext/pg_query/include/utils/errcodes.h +0 -354
- data/ext/pg_query/include/utils/expandeddatum.h +0 -159
- data/ext/pg_query/include/utils/expandedrecord.h +0 -231
- data/ext/pg_query/include/utils/float.h +0 -356
- data/ext/pg_query/include/utils/fmgroids.h +0 -3261
- data/ext/pg_query/include/utils/fmgrprotos.h +0 -2829
- data/ext/pg_query/include/utils/fmgrtab.h +0 -49
- data/ext/pg_query/include/utils/guc.h +0 -469
- data/ext/pg_query/include/utils/guc_tables.h +0 -276
- data/ext/pg_query/include/utils/hsearch.h +0 -153
- data/ext/pg_query/include/utils/inval.h +0 -68
- data/ext/pg_query/include/utils/lsyscache.h +0 -208
- data/ext/pg_query/include/utils/memdebug.h +0 -82
- data/ext/pg_query/include/utils/memutils.h +0 -230
- data/ext/pg_query/include/utils/numeric.h +0 -90
- data/ext/pg_query/include/utils/palloc.h +0 -158
- data/ext/pg_query/include/utils/partcache.h +0 -102
- data/ext/pg_query/include/utils/pg_locale.h +0 -127
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pgstat_internal.h +0 -784
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/plancache.h +0 -236
- data/ext/pg_query/include/utils/portal.h +0 -252
- data/ext/pg_query/include/utils/probes.h +0 -114
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/queryenvironment.h +0 -74
- data/ext/pg_query/include/utils/queryjumble.h +0 -88
- data/ext/pg_query/include/utils/regproc.h +0 -39
- data/ext/pg_query/include/utils/rel.h +0 -695
- data/ext/pg_query/include/utils/relcache.h +0 -153
- data/ext/pg_query/include/utils/reltrigger.h +0 -81
- data/ext/pg_query/include/utils/resowner.h +0 -86
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/ruleutils.h +0 -47
- data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
- data/ext/pg_query/include/utils/snapmgr.h +0 -179
- data/ext/pg_query/include/utils/snapshot.h +0 -219
- data/ext/pg_query/include/utils/sortsupport.h +0 -391
- data/ext/pg_query/include/utils/syscache.h +0 -224
- data/ext/pg_query/include/utils/timeout.h +0 -95
- data/ext/pg_query/include/utils/timestamp.h +0 -117
- data/ext/pg_query/include/utils/tuplesort.h +0 -291
- data/ext/pg_query/include/utils/tuplestore.h +0 -91
- data/ext/pg_query/include/utils/typcache.h +0 -209
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/include/utils/varlena.h +0 -41
- data/ext/pg_query/include/utils/wait_event.h +0 -289
- data/ext/pg_query/include/utils/xml.h +0 -84
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
- 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
- data/ext/pg_query/src_port_strnlen.c +0 -39
- /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
- /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -0,0 +1,421 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* pg_bitutils.h
|
4
|
+
* Miscellaneous functions for bit-wise operations.
|
5
|
+
*
|
6
|
+
*
|
7
|
+
* Copyright (c) 2019-2024, PostgreSQL Global Development Group
|
8
|
+
*
|
9
|
+
* src/include/port/pg_bitutils.h
|
10
|
+
*
|
11
|
+
*-------------------------------------------------------------------------
|
12
|
+
*/
|
13
|
+
#ifndef PG_BITUTILS_H
|
14
|
+
#define PG_BITUTILS_H
|
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
|
+
|
31
|
+
extern PGDLLIMPORT const uint8 pg_leftmost_one_pos[256];
|
32
|
+
extern PGDLLIMPORT const uint8 pg_rightmost_one_pos[256];
|
33
|
+
extern PGDLLIMPORT const uint8 pg_number_of_ones[256];
|
34
|
+
|
35
|
+
/*
|
36
|
+
* pg_leftmost_one_pos32
|
37
|
+
* Returns the position of the most significant set bit in "word",
|
38
|
+
* measured from the least significant bit. word must not be 0.
|
39
|
+
*/
|
40
|
+
static inline int
|
41
|
+
pg_leftmost_one_pos32(uint32 word)
|
42
|
+
{
|
43
|
+
#ifdef HAVE__BUILTIN_CLZ
|
44
|
+
Assert(word != 0);
|
45
|
+
|
46
|
+
return 31 - __builtin_clz(word);
|
47
|
+
#elif defined(_MSC_VER)
|
48
|
+
unsigned long result;
|
49
|
+
bool non_zero;
|
50
|
+
|
51
|
+
Assert(word != 0);
|
52
|
+
|
53
|
+
non_zero = _BitScanReverse(&result, word);
|
54
|
+
return (int) result;
|
55
|
+
#else
|
56
|
+
int shift = 32 - 8;
|
57
|
+
|
58
|
+
Assert(word != 0);
|
59
|
+
|
60
|
+
while ((word >> shift) == 0)
|
61
|
+
shift -= 8;
|
62
|
+
|
63
|
+
return shift + pg_leftmost_one_pos[(word >> shift) & 255];
|
64
|
+
#endif /* HAVE__BUILTIN_CLZ */
|
65
|
+
}
|
66
|
+
|
67
|
+
/*
|
68
|
+
* pg_leftmost_one_pos64
|
69
|
+
* As above, but for a 64-bit word.
|
70
|
+
*/
|
71
|
+
static inline int
|
72
|
+
pg_leftmost_one_pos64(uint64 word)
|
73
|
+
{
|
74
|
+
#ifdef HAVE__BUILTIN_CLZ
|
75
|
+
Assert(word != 0);
|
76
|
+
|
77
|
+
#if defined(HAVE_LONG_INT_64)
|
78
|
+
return 63 - __builtin_clzl(word);
|
79
|
+
#elif defined(HAVE_LONG_LONG_INT_64)
|
80
|
+
return 63 - __builtin_clzll(word);
|
81
|
+
#else
|
82
|
+
#error must have a working 64-bit integer datatype
|
83
|
+
#endif /* HAVE_LONG_INT_64 */
|
84
|
+
|
85
|
+
#elif defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_ARM64))
|
86
|
+
unsigned long result;
|
87
|
+
bool non_zero;
|
88
|
+
|
89
|
+
Assert(word != 0);
|
90
|
+
|
91
|
+
non_zero = _BitScanReverse64(&result, word);
|
92
|
+
return (int) result;
|
93
|
+
#else
|
94
|
+
int shift = 64 - 8;
|
95
|
+
|
96
|
+
Assert(word != 0);
|
97
|
+
|
98
|
+
while ((word >> shift) == 0)
|
99
|
+
shift -= 8;
|
100
|
+
|
101
|
+
return shift + pg_leftmost_one_pos[(word >> shift) & 255];
|
102
|
+
#endif /* HAVE__BUILTIN_CLZ */
|
103
|
+
}
|
104
|
+
|
105
|
+
/*
|
106
|
+
* pg_rightmost_one_pos32
|
107
|
+
* Returns the position of the least significant set bit in "word",
|
108
|
+
* measured from the least significant bit. word must not be 0.
|
109
|
+
*/
|
110
|
+
static inline int
|
111
|
+
pg_rightmost_one_pos32(uint32 word)
|
112
|
+
{
|
113
|
+
#ifdef HAVE__BUILTIN_CTZ
|
114
|
+
Assert(word != 0);
|
115
|
+
|
116
|
+
return __builtin_ctz(word);
|
117
|
+
#elif defined(_MSC_VER)
|
118
|
+
unsigned long result;
|
119
|
+
bool non_zero;
|
120
|
+
|
121
|
+
Assert(word != 0);
|
122
|
+
|
123
|
+
non_zero = _BitScanForward(&result, word);
|
124
|
+
return (int) result;
|
125
|
+
#else
|
126
|
+
int result = 0;
|
127
|
+
|
128
|
+
Assert(word != 0);
|
129
|
+
|
130
|
+
while ((word & 255) == 0)
|
131
|
+
{
|
132
|
+
word >>= 8;
|
133
|
+
result += 8;
|
134
|
+
}
|
135
|
+
result += pg_rightmost_one_pos[word & 255];
|
136
|
+
return result;
|
137
|
+
#endif /* HAVE__BUILTIN_CTZ */
|
138
|
+
}
|
139
|
+
|
140
|
+
/*
|
141
|
+
* pg_rightmost_one_pos64
|
142
|
+
* As above, but for a 64-bit word.
|
143
|
+
*/
|
144
|
+
static inline int
|
145
|
+
pg_rightmost_one_pos64(uint64 word)
|
146
|
+
{
|
147
|
+
#ifdef HAVE__BUILTIN_CTZ
|
148
|
+
Assert(word != 0);
|
149
|
+
|
150
|
+
#if defined(HAVE_LONG_INT_64)
|
151
|
+
return __builtin_ctzl(word);
|
152
|
+
#elif defined(HAVE_LONG_LONG_INT_64)
|
153
|
+
return __builtin_ctzll(word);
|
154
|
+
#else
|
155
|
+
#error must have a working 64-bit integer datatype
|
156
|
+
#endif /* HAVE_LONG_INT_64 */
|
157
|
+
|
158
|
+
#elif defined(_MSC_VER) && (defined(_M_AMD64) || defined(_M_ARM64))
|
159
|
+
unsigned long result;
|
160
|
+
bool non_zero;
|
161
|
+
|
162
|
+
Assert(word != 0);
|
163
|
+
|
164
|
+
non_zero = _BitScanForward64(&result, word);
|
165
|
+
return (int) result;
|
166
|
+
#else
|
167
|
+
int result = 0;
|
168
|
+
|
169
|
+
Assert(word != 0);
|
170
|
+
|
171
|
+
while ((word & 255) == 0)
|
172
|
+
{
|
173
|
+
word >>= 8;
|
174
|
+
result += 8;
|
175
|
+
}
|
176
|
+
result += pg_rightmost_one_pos[word & 255];
|
177
|
+
return result;
|
178
|
+
#endif /* HAVE__BUILTIN_CTZ */
|
179
|
+
}
|
180
|
+
|
181
|
+
/*
|
182
|
+
* pg_nextpower2_32
|
183
|
+
* Returns the next higher power of 2 above 'num', or 'num' if it's
|
184
|
+
* already a power of 2.
|
185
|
+
*
|
186
|
+
* 'num' mustn't be 0 or be above PG_UINT32_MAX / 2 + 1.
|
187
|
+
*/
|
188
|
+
static inline uint32
|
189
|
+
pg_nextpower2_32(uint32 num)
|
190
|
+
{
|
191
|
+
Assert(num > 0 && num <= PG_UINT32_MAX / 2 + 1);
|
192
|
+
|
193
|
+
/*
|
194
|
+
* A power 2 number has only 1 bit set. Subtracting 1 from such a number
|
195
|
+
* will turn on all previous bits resulting in no common bits being set
|
196
|
+
* between num and num-1.
|
197
|
+
*/
|
198
|
+
if ((num & (num - 1)) == 0)
|
199
|
+
return num; /* already power 2 */
|
200
|
+
|
201
|
+
return ((uint32) 1) << (pg_leftmost_one_pos32(num) + 1);
|
202
|
+
}
|
203
|
+
|
204
|
+
/*
|
205
|
+
* pg_nextpower2_64
|
206
|
+
* Returns the next higher power of 2 above 'num', or 'num' if it's
|
207
|
+
* already a power of 2.
|
208
|
+
*
|
209
|
+
* 'num' mustn't be 0 or be above PG_UINT64_MAX / 2 + 1.
|
210
|
+
*/
|
211
|
+
static inline uint64
|
212
|
+
pg_nextpower2_64(uint64 num)
|
213
|
+
{
|
214
|
+
Assert(num > 0 && num <= PG_UINT64_MAX / 2 + 1);
|
215
|
+
|
216
|
+
/*
|
217
|
+
* A power 2 number has only 1 bit set. Subtracting 1 from such a number
|
218
|
+
* will turn on all previous bits resulting in no common bits being set
|
219
|
+
* between num and num-1.
|
220
|
+
*/
|
221
|
+
if ((num & (num - 1)) == 0)
|
222
|
+
return num; /* already power 2 */
|
223
|
+
|
224
|
+
return ((uint64) 1) << (pg_leftmost_one_pos64(num) + 1);
|
225
|
+
}
|
226
|
+
|
227
|
+
/*
|
228
|
+
* pg_prevpower2_32
|
229
|
+
* Returns the next lower power of 2 below 'num', or 'num' if it's
|
230
|
+
* already a power of 2.
|
231
|
+
*
|
232
|
+
* 'num' mustn't be 0.
|
233
|
+
*/
|
234
|
+
static inline uint32
|
235
|
+
pg_prevpower2_32(uint32 num)
|
236
|
+
{
|
237
|
+
return ((uint32) 1) << pg_leftmost_one_pos32(num);
|
238
|
+
}
|
239
|
+
|
240
|
+
/*
|
241
|
+
* pg_prevpower2_64
|
242
|
+
* Returns the next lower power of 2 below 'num', or 'num' if it's
|
243
|
+
* already a power of 2.
|
244
|
+
*
|
245
|
+
* 'num' mustn't be 0.
|
246
|
+
*/
|
247
|
+
static inline uint64
|
248
|
+
pg_prevpower2_64(uint64 num)
|
249
|
+
{
|
250
|
+
return ((uint64) 1) << pg_leftmost_one_pos64(num);
|
251
|
+
}
|
252
|
+
|
253
|
+
/*
|
254
|
+
* pg_ceil_log2_32
|
255
|
+
* Returns equivalent of ceil(log2(num))
|
256
|
+
*/
|
257
|
+
static inline uint32
|
258
|
+
pg_ceil_log2_32(uint32 num)
|
259
|
+
{
|
260
|
+
if (num < 2)
|
261
|
+
return 0;
|
262
|
+
else
|
263
|
+
return pg_leftmost_one_pos32(num - 1) + 1;
|
264
|
+
}
|
265
|
+
|
266
|
+
/*
|
267
|
+
* pg_ceil_log2_64
|
268
|
+
* Returns equivalent of ceil(log2(num))
|
269
|
+
*/
|
270
|
+
static inline uint64
|
271
|
+
pg_ceil_log2_64(uint64 num)
|
272
|
+
{
|
273
|
+
if (num < 2)
|
274
|
+
return 0;
|
275
|
+
else
|
276
|
+
return pg_leftmost_one_pos64(num - 1) + 1;
|
277
|
+
}
|
278
|
+
|
279
|
+
/*
|
280
|
+
* With MSVC on x86_64 builds, try using native popcnt instructions via the
|
281
|
+
* __popcnt and __popcnt64 intrinsics. These don't work the same as GCC's
|
282
|
+
* __builtin_popcount* intrinsic functions as they always emit popcnt
|
283
|
+
* instructions.
|
284
|
+
*/
|
285
|
+
#if defined(_MSC_VER) && defined(_M_AMD64)
|
286
|
+
#define HAVE_X86_64_POPCNTQ
|
287
|
+
#endif
|
288
|
+
|
289
|
+
/*
|
290
|
+
* On x86_64, we can use the hardware popcount instruction, but only if
|
291
|
+
* we can verify that the CPU supports it via the cpuid instruction.
|
292
|
+
*
|
293
|
+
* Otherwise, we fall back to a hand-rolled implementation.
|
294
|
+
*/
|
295
|
+
#ifdef HAVE_X86_64_POPCNTQ
|
296
|
+
#if defined(HAVE__GET_CPUID) || defined(HAVE__CPUID)
|
297
|
+
#define TRY_POPCNT_FAST 1
|
298
|
+
#endif
|
299
|
+
#endif
|
300
|
+
|
301
|
+
#ifdef TRY_POPCNT_FAST
|
302
|
+
/* Attempt to use the POPCNT instruction, but perform a runtime check first */
|
303
|
+
extern PGDLLIMPORT int (*pg_popcount32) (uint32 word);
|
304
|
+
extern PGDLLIMPORT int (*pg_popcount64) (uint64 word);
|
305
|
+
extern PGDLLIMPORT uint64 (*pg_popcount_optimized) (const char *buf, int bytes);
|
306
|
+
extern PGDLLIMPORT uint64 (*pg_popcount_masked_optimized) (const char *buf, int bytes, bits8 mask);
|
307
|
+
|
308
|
+
/*
|
309
|
+
* We can also try to use the AVX-512 popcount instruction on some systems.
|
310
|
+
* The implementation of that is located in its own file because it may
|
311
|
+
* require special compiler flags that we don't want to apply to any other
|
312
|
+
* files.
|
313
|
+
*/
|
314
|
+
#ifdef USE_AVX512_POPCNT_WITH_RUNTIME_CHECK
|
315
|
+
extern bool pg_popcount_avx512_available(void);
|
316
|
+
extern uint64 pg_popcount_avx512(const char *buf, int bytes);
|
317
|
+
extern uint64 pg_popcount_masked_avx512(const char *buf, int bytes, bits8 mask);
|
318
|
+
#endif
|
319
|
+
|
320
|
+
#else
|
321
|
+
/* Use a portable implementation -- no need for a function pointer. */
|
322
|
+
extern int pg_popcount32(uint32 word);
|
323
|
+
extern int pg_popcount64(uint64 word);
|
324
|
+
extern uint64 pg_popcount_optimized(const char *buf, int bytes);
|
325
|
+
extern uint64 pg_popcount_masked_optimized(const char *buf, int bytes, bits8 mask);
|
326
|
+
|
327
|
+
#endif /* TRY_POPCNT_FAST */
|
328
|
+
|
329
|
+
/*
|
330
|
+
* Returns the number of 1-bits in buf.
|
331
|
+
*
|
332
|
+
* If there aren't many bytes to process, the function call overhead of the
|
333
|
+
* optimized versions isn't worth taking, so we inline a loop that consults
|
334
|
+
* pg_number_of_ones in that case. If there are many bytes to process, we
|
335
|
+
* accept the function call overhead because the optimized versions are likely
|
336
|
+
* to be faster.
|
337
|
+
*/
|
338
|
+
static inline uint64
|
339
|
+
pg_popcount(const char *buf, int bytes)
|
340
|
+
{
|
341
|
+
/*
|
342
|
+
* We set the threshold to the point at which we'll first use special
|
343
|
+
* instructions in the optimized version.
|
344
|
+
*/
|
345
|
+
#if SIZEOF_VOID_P >= 8
|
346
|
+
int threshold = 8;
|
347
|
+
#else
|
348
|
+
int threshold = 4;
|
349
|
+
#endif
|
350
|
+
|
351
|
+
if (bytes < threshold)
|
352
|
+
{
|
353
|
+
uint64 popcnt = 0;
|
354
|
+
|
355
|
+
while (bytes--)
|
356
|
+
popcnt += pg_number_of_ones[(unsigned char) *buf++];
|
357
|
+
return popcnt;
|
358
|
+
}
|
359
|
+
|
360
|
+
return pg_popcount_optimized(buf, bytes);
|
361
|
+
}
|
362
|
+
|
363
|
+
/*
|
364
|
+
* Returns the number of 1-bits in buf after applying the mask to each byte.
|
365
|
+
*
|
366
|
+
* Similar to pg_popcount(), we only take on the function pointer overhead when
|
367
|
+
* it's likely to be faster.
|
368
|
+
*/
|
369
|
+
static inline uint64
|
370
|
+
pg_popcount_masked(const char *buf, int bytes, bits8 mask)
|
371
|
+
{
|
372
|
+
/*
|
373
|
+
* We set the threshold to the point at which we'll first use special
|
374
|
+
* instructions in the optimized version.
|
375
|
+
*/
|
376
|
+
#if SIZEOF_VOID_P >= 8
|
377
|
+
int threshold = 8;
|
378
|
+
#else
|
379
|
+
int threshold = 4;
|
380
|
+
#endif
|
381
|
+
|
382
|
+
if (bytes < threshold)
|
383
|
+
{
|
384
|
+
uint64 popcnt = 0;
|
385
|
+
|
386
|
+
while (bytes--)
|
387
|
+
popcnt += pg_number_of_ones[(unsigned char) *buf++ & mask];
|
388
|
+
return popcnt;
|
389
|
+
}
|
390
|
+
|
391
|
+
return pg_popcount_masked_optimized(buf, bytes, mask);
|
392
|
+
}
|
393
|
+
|
394
|
+
/*
|
395
|
+
* Rotate the bits of "word" to the right/left by n bits.
|
396
|
+
*/
|
397
|
+
static inline uint32
|
398
|
+
pg_rotate_right32(uint32 word, int n)
|
399
|
+
{
|
400
|
+
return (word >> n) | (word << (32 - n));
|
401
|
+
}
|
402
|
+
|
403
|
+
static inline uint32
|
404
|
+
pg_rotate_left32(uint32 word, int n)
|
405
|
+
{
|
406
|
+
return (word << n) | (word >> (32 - n));
|
407
|
+
}
|
408
|
+
|
409
|
+
/* size_t variants of the above, as required */
|
410
|
+
|
411
|
+
#if SIZEOF_SIZE_T == 4
|
412
|
+
#define pg_leftmost_one_pos_size_t pg_leftmost_one_pos32
|
413
|
+
#define pg_nextpower2_size_t pg_nextpower2_32
|
414
|
+
#define pg_prevpower2_size_t pg_prevpower2_32
|
415
|
+
#else
|
416
|
+
#define pg_leftmost_one_pos_size_t pg_leftmost_one_pos64
|
417
|
+
#define pg_nextpower2_size_t pg_nextpower2_64
|
418
|
+
#define pg_prevpower2_size_t pg_prevpower2_64
|
419
|
+
#endif
|
420
|
+
|
421
|
+
#endif /* PG_BITUTILS_H */
|
@@ -0,0 +1,161 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* pg_bswap.h
|
4
|
+
* Byte swapping.
|
5
|
+
*
|
6
|
+
* Macros for reversing the byte order of 16, 32 and 64-bit unsigned integers.
|
7
|
+
* For example, 0xAABBCCDD becomes 0xDDCCBBAA. These are just wrappers for
|
8
|
+
* built-in functions provided by the compiler where support exists.
|
9
|
+
*
|
10
|
+
* Note that all of these functions accept unsigned integers as arguments and
|
11
|
+
* return the same. Use caution when using these wrapper macros with signed
|
12
|
+
* integers.
|
13
|
+
*
|
14
|
+
* Copyright (c) 2015-2024, PostgreSQL Global Development Group
|
15
|
+
*
|
16
|
+
* src/include/port/pg_bswap.h
|
17
|
+
*
|
18
|
+
*-------------------------------------------------------------------------
|
19
|
+
*/
|
20
|
+
#ifndef PG_BSWAP_H
|
21
|
+
#define PG_BSWAP_H
|
22
|
+
|
23
|
+
|
24
|
+
/*
|
25
|
+
* In all supported versions msvc provides _byteswap_* functions in stdlib.h,
|
26
|
+
* already included by c.h.
|
27
|
+
*/
|
28
|
+
|
29
|
+
|
30
|
+
/* implementation of uint16 pg_bswap16(uint16) */
|
31
|
+
#if defined(HAVE__BUILTIN_BSWAP16)
|
32
|
+
|
33
|
+
#define pg_bswap16(x) __builtin_bswap16(x)
|
34
|
+
|
35
|
+
#elif defined(_MSC_VER)
|
36
|
+
|
37
|
+
#define pg_bswap16(x) _byteswap_ushort(x)
|
38
|
+
|
39
|
+
#else
|
40
|
+
|
41
|
+
static inline uint16
|
42
|
+
pg_bswap16(uint16 x)
|
43
|
+
{
|
44
|
+
return
|
45
|
+
((x << 8) & 0xff00) |
|
46
|
+
((x >> 8) & 0x00ff);
|
47
|
+
}
|
48
|
+
|
49
|
+
#endif /* HAVE__BUILTIN_BSWAP16 */
|
50
|
+
|
51
|
+
|
52
|
+
/* implementation of uint32 pg_bswap32(uint32) */
|
53
|
+
#if defined(HAVE__BUILTIN_BSWAP32)
|
54
|
+
|
55
|
+
#define pg_bswap32(x) __builtin_bswap32(x)
|
56
|
+
|
57
|
+
#elif defined(_MSC_VER)
|
58
|
+
|
59
|
+
#define pg_bswap32(x) _byteswap_ulong(x)
|
60
|
+
|
61
|
+
#else
|
62
|
+
|
63
|
+
static inline uint32
|
64
|
+
pg_bswap32(uint32 x)
|
65
|
+
{
|
66
|
+
return
|
67
|
+
((x << 24) & 0xff000000) |
|
68
|
+
((x << 8) & 0x00ff0000) |
|
69
|
+
((x >> 8) & 0x0000ff00) |
|
70
|
+
((x >> 24) & 0x000000ff);
|
71
|
+
}
|
72
|
+
|
73
|
+
#endif /* HAVE__BUILTIN_BSWAP32 */
|
74
|
+
|
75
|
+
|
76
|
+
/* implementation of uint64 pg_bswap64(uint64) */
|
77
|
+
#if defined(HAVE__BUILTIN_BSWAP64)
|
78
|
+
|
79
|
+
#define pg_bswap64(x) __builtin_bswap64(x)
|
80
|
+
|
81
|
+
|
82
|
+
#elif defined(_MSC_VER)
|
83
|
+
|
84
|
+
#define pg_bswap64(x) _byteswap_uint64(x)
|
85
|
+
|
86
|
+
#else
|
87
|
+
|
88
|
+
static inline uint64
|
89
|
+
pg_bswap64(uint64 x)
|
90
|
+
{
|
91
|
+
return
|
92
|
+
((x << 56) & UINT64CONST(0xff00000000000000)) |
|
93
|
+
((x << 40) & UINT64CONST(0x00ff000000000000)) |
|
94
|
+
((x << 24) & UINT64CONST(0x0000ff0000000000)) |
|
95
|
+
((x << 8) & UINT64CONST(0x000000ff00000000)) |
|
96
|
+
((x >> 8) & UINT64CONST(0x00000000ff000000)) |
|
97
|
+
((x >> 24) & UINT64CONST(0x0000000000ff0000)) |
|
98
|
+
((x >> 40) & UINT64CONST(0x000000000000ff00)) |
|
99
|
+
((x >> 56) & UINT64CONST(0x00000000000000ff));
|
100
|
+
}
|
101
|
+
#endif /* HAVE__BUILTIN_BSWAP64 */
|
102
|
+
|
103
|
+
|
104
|
+
/*
|
105
|
+
* Portable and fast equivalents for ntohs, ntohl, htons, htonl,
|
106
|
+
* additionally extended to 64 bits.
|
107
|
+
*/
|
108
|
+
#ifdef WORDS_BIGENDIAN
|
109
|
+
|
110
|
+
#define pg_hton16(x) (x)
|
111
|
+
#define pg_hton32(x) (x)
|
112
|
+
#define pg_hton64(x) (x)
|
113
|
+
|
114
|
+
#define pg_ntoh16(x) (x)
|
115
|
+
#define pg_ntoh32(x) (x)
|
116
|
+
#define pg_ntoh64(x) (x)
|
117
|
+
|
118
|
+
#else
|
119
|
+
|
120
|
+
#define pg_hton16(x) pg_bswap16(x)
|
121
|
+
#define pg_hton32(x) pg_bswap32(x)
|
122
|
+
#define pg_hton64(x) pg_bswap64(x)
|
123
|
+
|
124
|
+
#define pg_ntoh16(x) pg_bswap16(x)
|
125
|
+
#define pg_ntoh32(x) pg_bswap32(x)
|
126
|
+
#define pg_ntoh64(x) pg_bswap64(x)
|
127
|
+
|
128
|
+
#endif /* WORDS_BIGENDIAN */
|
129
|
+
|
130
|
+
|
131
|
+
/*
|
132
|
+
* Rearrange the bytes of a Datum from big-endian order into the native byte
|
133
|
+
* order. On big-endian machines, this does nothing at all. Note that the C
|
134
|
+
* type Datum is an unsigned integer type on all platforms.
|
135
|
+
*
|
136
|
+
* One possible application of the DatumBigEndianToNative() macro is to make
|
137
|
+
* bitwise comparisons cheaper. A simple 3-way comparison of Datums
|
138
|
+
* transformed by the macro (based on native, unsigned comparisons) will return
|
139
|
+
* the same result as a memcmp() of the corresponding original Datums, but can
|
140
|
+
* be much cheaper. It's generally safe to do this on big-endian systems
|
141
|
+
* without any special transformation occurring first.
|
142
|
+
*
|
143
|
+
* If SIZEOF_DATUM is not defined, then postgres.h wasn't included and these
|
144
|
+
* macros probably shouldn't be used, so we define nothing. Note that
|
145
|
+
* SIZEOF_DATUM == 8 would evaluate as 0 == 8 in that case, potentially
|
146
|
+
* leading to the wrong implementation being selected and confusing errors, so
|
147
|
+
* defining nothing is safest.
|
148
|
+
*/
|
149
|
+
#ifdef SIZEOF_DATUM
|
150
|
+
#ifdef WORDS_BIGENDIAN
|
151
|
+
#define DatumBigEndianToNative(x) (x)
|
152
|
+
#else /* !WORDS_BIGENDIAN */
|
153
|
+
#if SIZEOF_DATUM == 8
|
154
|
+
#define DatumBigEndianToNative(x) pg_bswap64(x)
|
155
|
+
#else /* SIZEOF_DATUM != 8 */
|
156
|
+
#define DatumBigEndianToNative(x) pg_bswap32(x)
|
157
|
+
#endif /* SIZEOF_DATUM == 8 */
|
158
|
+
#endif /* WORDS_BIGENDIAN */
|
159
|
+
#endif /* SIZEOF_DATUM */
|
160
|
+
|
161
|
+
#endif /* PG_BSWAP_H */
|
@@ -0,0 +1,110 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* pg_crc32c.h
|
4
|
+
* Routines for computing CRC-32C checksums.
|
5
|
+
*
|
6
|
+
* The speed of CRC-32C calculation has a big impact on performance, so we
|
7
|
+
* jump through some hoops to get the best implementation for each
|
8
|
+
* platform. Some CPU architectures have special instructions for speeding
|
9
|
+
* up CRC calculations (e.g. Intel SSE 4.2), on other platforms we use the
|
10
|
+
* Slicing-by-8 algorithm which uses lookup tables.
|
11
|
+
*
|
12
|
+
* The public interface consists of four macros:
|
13
|
+
*
|
14
|
+
* INIT_CRC32C(crc)
|
15
|
+
* Initialize a CRC accumulator
|
16
|
+
*
|
17
|
+
* COMP_CRC32C(crc, data, len)
|
18
|
+
* Accumulate some (more) bytes into a CRC
|
19
|
+
*
|
20
|
+
* FIN_CRC32C(crc)
|
21
|
+
* Finish a CRC calculation
|
22
|
+
*
|
23
|
+
* EQ_CRC32C(c1, c2)
|
24
|
+
* Check for equality of two CRCs.
|
25
|
+
*
|
26
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
27
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
28
|
+
*
|
29
|
+
* src/include/port/pg_crc32c.h
|
30
|
+
*
|
31
|
+
*-------------------------------------------------------------------------
|
32
|
+
*/
|
33
|
+
#ifndef PG_CRC32C_H
|
34
|
+
#define PG_CRC32C_H
|
35
|
+
|
36
|
+
#include "port/pg_bswap.h"
|
37
|
+
|
38
|
+
typedef uint32 pg_crc32c;
|
39
|
+
|
40
|
+
/* The INIT and EQ macros are the same for all implementations. */
|
41
|
+
#define INIT_CRC32C(crc) ((crc) = 0xFFFFFFFF)
|
42
|
+
#define EQ_CRC32C(c1, c2) ((c1) == (c2))
|
43
|
+
|
44
|
+
#if defined(USE_SSE42_CRC32C)
|
45
|
+
/* Use Intel SSE4.2 instructions. */
|
46
|
+
#define COMP_CRC32C(crc, data, len) \
|
47
|
+
((crc) = pg_comp_crc32c_sse42((crc), (data), (len)))
|
48
|
+
#define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF)
|
49
|
+
|
50
|
+
extern pg_crc32c pg_comp_crc32c_sse42(pg_crc32c crc, const void *data, size_t len);
|
51
|
+
|
52
|
+
#elif defined(USE_ARMV8_CRC32C)
|
53
|
+
/* Use ARMv8 CRC Extension instructions. */
|
54
|
+
|
55
|
+
#define COMP_CRC32C(crc, data, len) \
|
56
|
+
((crc) = pg_comp_crc32c_armv8((crc), (data), (len)))
|
57
|
+
#define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF)
|
58
|
+
|
59
|
+
extern pg_crc32c pg_comp_crc32c_armv8(pg_crc32c crc, const void *data, size_t len);
|
60
|
+
|
61
|
+
#elif defined(USE_LOONGARCH_CRC32C)
|
62
|
+
/* Use LoongArch CRCC instructions. */
|
63
|
+
|
64
|
+
#define COMP_CRC32C(crc, data, len) \
|
65
|
+
((crc) = pg_comp_crc32c_loongarch((crc), (data), (len)))
|
66
|
+
#define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF)
|
67
|
+
|
68
|
+
extern pg_crc32c pg_comp_crc32c_loongarch(pg_crc32c crc, const void *data, size_t len);
|
69
|
+
|
70
|
+
#elif defined(USE_SSE42_CRC32C_WITH_RUNTIME_CHECK) || defined(USE_ARMV8_CRC32C_WITH_RUNTIME_CHECK)
|
71
|
+
|
72
|
+
/*
|
73
|
+
* Use Intel SSE 4.2 or ARMv8 instructions, but perform a runtime check first
|
74
|
+
* to check that they are available.
|
75
|
+
*/
|
76
|
+
#define COMP_CRC32C(crc, data, len) \
|
77
|
+
((crc) = pg_comp_crc32c((crc), (data), (len)))
|
78
|
+
#define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF)
|
79
|
+
|
80
|
+
extern pg_crc32c pg_comp_crc32c_sb8(pg_crc32c crc, const void *data, size_t len);
|
81
|
+
extern pg_crc32c (*pg_comp_crc32c) (pg_crc32c crc, const void *data, size_t len);
|
82
|
+
|
83
|
+
#ifdef USE_SSE42_CRC32C_WITH_RUNTIME_CHECK
|
84
|
+
extern pg_crc32c pg_comp_crc32c_sse42(pg_crc32c crc, const void *data, size_t len);
|
85
|
+
#endif
|
86
|
+
#ifdef USE_ARMV8_CRC32C_WITH_RUNTIME_CHECK
|
87
|
+
extern pg_crc32c pg_comp_crc32c_armv8(pg_crc32c crc, const void *data, size_t len);
|
88
|
+
#endif
|
89
|
+
|
90
|
+
#else
|
91
|
+
/*
|
92
|
+
* Use slicing-by-8 algorithm.
|
93
|
+
*
|
94
|
+
* On big-endian systems, the intermediate value is kept in reverse byte
|
95
|
+
* order, to avoid byte-swapping during the calculation. FIN_CRC32C reverses
|
96
|
+
* the bytes to the final order.
|
97
|
+
*/
|
98
|
+
#define COMP_CRC32C(crc, data, len) \
|
99
|
+
((crc) = pg_comp_crc32c_sb8((crc), (data), (len)))
|
100
|
+
#ifdef WORDS_BIGENDIAN
|
101
|
+
#define FIN_CRC32C(crc) ((crc) = pg_bswap32(crc) ^ 0xFFFFFFFF)
|
102
|
+
#else
|
103
|
+
#define FIN_CRC32C(crc) ((crc) ^= 0xFFFFFFFF)
|
104
|
+
#endif
|
105
|
+
|
106
|
+
extern pg_crc32c pg_comp_crc32c_sb8(pg_crc32c crc, const void *data, size_t len);
|
107
|
+
|
108
|
+
#endif
|
109
|
+
|
110
|
+
#endif /* PG_CRC32C_H */
|