pg_query 4.2.1 → 5.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 +31 -0
- data/README.md +6 -8
- data/Rakefile +5 -6
- data/ext/pg_query/extconf.rb +14 -4
- 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/{access → postgres/access}/amapi.h +3 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
- data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +6 -2
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
- data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relscan.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
- data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/stratnum.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
- data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
- data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +58 -98
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
- data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
- data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +4 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
- data/ext/pg_query/include/postgres/common/int.h +437 -0
- data/ext/pg_query/include/{common → postgres/common}/keywords.h +1 -1
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
- 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/{common → postgres/common}/string.h +5 -3
- data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +11 -4
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/executor.h +34 -17
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
- data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
- data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +21 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
- data/ext/pg_query/include/postgres/gram.h +1127 -0
- data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
- data/ext/pg_query/include/{jit → postgres/jit}/jit.h +2 -2
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
- data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
- 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/{mb → postgres/mb}/pg_wchar.h +35 -18
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +96 -511
- data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +377 -139
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
- data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/value.h +12 -2
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
- data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
- data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +1 -1
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
- data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
- data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +1 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -3
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
- data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +62 -25
- data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
- data/ext/pg_query/include/postgres/port/simd.h +375 -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 +26 -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 +594 -0
- data/ext/pg_query/include/{port.h → postgres/port.h} +42 -75
- 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_ext.h → postgres/postgres_ext.h} +0 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +1 -4
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
- data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
- data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
- data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +94 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
- data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
- data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
- data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
- data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
- data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +41 -21
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
- data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
- data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
- data/ext/pg_query/include/{utils → postgres/utils}/float.h +7 -6
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +20 -5
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
- data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/regproc.h +3 -3
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
- data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +6 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
- data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
- 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/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +19755 -17757
- 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 +1 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
- 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 +7 -5
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/pg_query_split.c +3 -3
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- 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_nodes.c +38 -0
- 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_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 +371 -249
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
- data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -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 +79 -5
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +6 -10
- data/ext/pg_query/src_port_strerror.c +1 -1
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/fingerprint.rb +2 -3
- data/lib/pg_query/node.rb +16 -11
- data/lib/pg_query/parse.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +166 -3191
- data/lib/pg_query/treewalker.rb +23 -5
- data/lib/pg_query/version.rb +1 -1
- metadata +432 -380
- data/ext/pg_query/guc-file.c +0 -0
- 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/common/ip.h +0 -31
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1095
- data/ext/pg_query/include/parser/gram.h +0 -1101
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/pgarch.h +0 -73
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- 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/pidfile.h +0 -56
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- 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_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/include/{access → postgres/access}/rmgr.h +0 -0
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
- /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
- /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
- /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +0 -0
|
@@ -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:
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* generic-msvc.h
|
|
4
|
+
* Atomic operations support when using MSVC
|
|
5
|
+
*
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
|
+
*
|
|
9
|
+
* NOTES:
|
|
10
|
+
*
|
|
11
|
+
* Documentation:
|
|
12
|
+
* * Interlocked Variable Access
|
|
13
|
+
* http://msdn.microsoft.com/en-us/library/ms684122%28VS.85%29.aspx
|
|
14
|
+
*
|
|
15
|
+
* src/include/port/atomics/generic-msvc.h
|
|
16
|
+
*
|
|
17
|
+
*-------------------------------------------------------------------------
|
|
18
|
+
*/
|
|
19
|
+
#include <intrin.h>
|
|
20
|
+
|
|
21
|
+
/* intentionally no include guards, should only be included by atomics.h */
|
|
22
|
+
#ifndef INSIDE_ATOMICS_H
|
|
23
|
+
#error "should be included via atomics.h"
|
|
24
|
+
#endif
|
|
25
|
+
|
|
26
|
+
#pragma intrinsic(_ReadWriteBarrier)
|
|
27
|
+
#define pg_compiler_barrier_impl() _ReadWriteBarrier()
|
|
28
|
+
|
|
29
|
+
#ifndef pg_memory_barrier_impl
|
|
30
|
+
#define pg_memory_barrier_impl() MemoryBarrier()
|
|
31
|
+
#endif
|
|
32
|
+
|
|
33
|
+
#if defined(HAVE_ATOMICS)
|
|
34
|
+
|
|
35
|
+
#define PG_HAVE_ATOMIC_U32_SUPPORT
|
|
36
|
+
typedef struct pg_atomic_uint32
|
|
37
|
+
{
|
|
38
|
+
volatile uint32 value;
|
|
39
|
+
} pg_atomic_uint32;
|
|
40
|
+
|
|
41
|
+
#define PG_HAVE_ATOMIC_U64_SUPPORT
|
|
42
|
+
typedef struct pg_attribute_aligned(8) pg_atomic_uint64
|
|
43
|
+
{
|
|
44
|
+
volatile uint64 value;
|
|
45
|
+
} pg_atomic_uint64;
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
#define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32
|
|
49
|
+
static inline bool
|
|
50
|
+
pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
|
|
51
|
+
uint32 *expected, uint32 newval)
|
|
52
|
+
{
|
|
53
|
+
bool ret;
|
|
54
|
+
uint32 current;
|
|
55
|
+
current = InterlockedCompareExchange(&ptr->value, newval, *expected);
|
|
56
|
+
ret = current == *expected;
|
|
57
|
+
*expected = current;
|
|
58
|
+
return ret;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
#define PG_HAVE_ATOMIC_FETCH_ADD_U32
|
|
62
|
+
static inline uint32
|
|
63
|
+
pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_)
|
|
64
|
+
{
|
|
65
|
+
return InterlockedExchangeAdd(&ptr->value, add_);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/*
|
|
69
|
+
* The non-intrinsics versions are only available in vista upwards, so use the
|
|
70
|
+
* intrinsic version. Only supported on >486, but we require XP as a minimum
|
|
71
|
+
* baseline, which doesn't support the 486, so we don't need to add checks for
|
|
72
|
+
* that case.
|
|
73
|
+
*/
|
|
74
|
+
#pragma intrinsic(_InterlockedCompareExchange64)
|
|
75
|
+
|
|
76
|
+
#define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64
|
|
77
|
+
static inline bool
|
|
78
|
+
pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr,
|
|
79
|
+
uint64 *expected, uint64 newval)
|
|
80
|
+
{
|
|
81
|
+
bool ret;
|
|
82
|
+
uint64 current;
|
|
83
|
+
current = _InterlockedCompareExchange64(&ptr->value, newval, *expected);
|
|
84
|
+
ret = current == *expected;
|
|
85
|
+
*expected = current;
|
|
86
|
+
return ret;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* Only implemented on 64bit builds */
|
|
90
|
+
#ifdef _WIN64
|
|
91
|
+
#pragma intrinsic(_InterlockedExchangeAdd64)
|
|
92
|
+
|
|
93
|
+
#define PG_HAVE_ATOMIC_FETCH_ADD_U64
|
|
94
|
+
static inline uint64
|
|
95
|
+
pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_)
|
|
96
|
+
{
|
|
97
|
+
return _InterlockedExchangeAdd64(&ptr->value, add_);
|
|
98
|
+
}
|
|
99
|
+
#endif /* _WIN64 */
|
|
100
|
+
|
|
101
|
+
#endif /* HAVE_ATOMICS */
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* generic-sunpro.h
|
|
4
|
+
* Atomic operations for solaris' CC
|
|
5
|
+
*
|
|
6
|
+
* Portions Copyright (c) 2013-2023, PostgreSQL Global Development Group
|
|
7
|
+
*
|
|
8
|
+
* NOTES:
|
|
9
|
+
*
|
|
10
|
+
* Documentation:
|
|
11
|
+
* * manpage for atomic_cas(3C)
|
|
12
|
+
* http://www.unix.com/man-page/opensolaris/3c/atomic_cas/
|
|
13
|
+
* http://docs.oracle.com/cd/E23824_01/html/821-1465/atomic-cas-3c.html
|
|
14
|
+
*
|
|
15
|
+
* src/include/port/atomics/generic-sunpro.h
|
|
16
|
+
*
|
|
17
|
+
* -------------------------------------------------------------------------
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
#if defined(HAVE_ATOMICS)
|
|
21
|
+
|
|
22
|
+
#ifdef HAVE_MBARRIER_H
|
|
23
|
+
#include <mbarrier.h>
|
|
24
|
+
|
|
25
|
+
#define pg_compiler_barrier_impl() __compiler_barrier()
|
|
26
|
+
|
|
27
|
+
#ifndef pg_memory_barrier_impl
|
|
28
|
+
/*
|
|
29
|
+
* Despite the name this is actually a full barrier. Expanding to mfence/
|
|
30
|
+
* membar #StoreStore | #LoadStore | #StoreLoad | #LoadLoad on x86/sparc
|
|
31
|
+
* respectively.
|
|
32
|
+
*/
|
|
33
|
+
# define pg_memory_barrier_impl() __machine_rw_barrier()
|
|
34
|
+
#endif
|
|
35
|
+
#ifndef pg_read_barrier_impl
|
|
36
|
+
# define pg_read_barrier_impl() __machine_r_barrier()
|
|
37
|
+
#endif
|
|
38
|
+
#ifndef pg_write_barrier_impl
|
|
39
|
+
# define pg_write_barrier_impl() __machine_w_barrier()
|
|
40
|
+
#endif
|
|
41
|
+
|
|
42
|
+
#endif /* HAVE_MBARRIER_H */
|
|
43
|
+
|
|
44
|
+
/* Older versions of the compiler don't have atomic.h... */
|
|
45
|
+
#ifdef HAVE_ATOMIC_H
|
|
46
|
+
|
|
47
|
+
#include <atomic.h>
|
|
48
|
+
|
|
49
|
+
#define PG_HAVE_ATOMIC_U32_SUPPORT
|
|
50
|
+
typedef struct pg_atomic_uint32
|
|
51
|
+
{
|
|
52
|
+
volatile uint32 value;
|
|
53
|
+
} pg_atomic_uint32;
|
|
54
|
+
|
|
55
|
+
#define PG_HAVE_ATOMIC_U64_SUPPORT
|
|
56
|
+
typedef struct pg_atomic_uint64
|
|
57
|
+
{
|
|
58
|
+
/*
|
|
59
|
+
* Syntax to enforce variable alignment should be supported by versions
|
|
60
|
+
* supporting atomic.h, but it's hard to find accurate documentation. If
|
|
61
|
+
* it proves to be a problem, we'll have to add more version checks for 64
|
|
62
|
+
* bit support.
|
|
63
|
+
*/
|
|
64
|
+
volatile uint64 value pg_attribute_aligned(8);
|
|
65
|
+
} pg_atomic_uint64;
|
|
66
|
+
|
|
67
|
+
#endif /* HAVE_ATOMIC_H */
|
|
68
|
+
|
|
69
|
+
#endif /* defined(HAVE_ATOMICS) */
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
#if defined(HAVE_ATOMICS)
|
|
73
|
+
|
|
74
|
+
#ifdef HAVE_ATOMIC_H
|
|
75
|
+
|
|
76
|
+
#define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U32
|
|
77
|
+
static inline bool
|
|
78
|
+
pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
|
|
79
|
+
uint32 *expected, uint32 newval)
|
|
80
|
+
{
|
|
81
|
+
bool ret;
|
|
82
|
+
uint32 current;
|
|
83
|
+
|
|
84
|
+
current = atomic_cas_32(&ptr->value, *expected, newval);
|
|
85
|
+
ret = current == *expected;
|
|
86
|
+
*expected = current;
|
|
87
|
+
return ret;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
#define PG_HAVE_ATOMIC_COMPARE_EXCHANGE_U64
|
|
91
|
+
static inline bool
|
|
92
|
+
pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr,
|
|
93
|
+
uint64 *expected, uint64 newval)
|
|
94
|
+
{
|
|
95
|
+
bool ret;
|
|
96
|
+
uint64 current;
|
|
97
|
+
|
|
98
|
+
current = atomic_cas_64(&ptr->value, *expected, newval);
|
|
99
|
+
ret = current == *expected;
|
|
100
|
+
*expected = current;
|
|
101
|
+
return ret;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
#endif /* HAVE_ATOMIC_H */
|
|
105
|
+
|
|
106
|
+
#endif /* defined(HAVE_ATOMICS) */
|
|
@@ -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
|