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
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* algorithm. Parallel sorts use a variant of this external sort
|
|
12
12
|
* algorithm, and are typically only used for large amounts of data.
|
|
13
13
|
*
|
|
14
|
-
* Portions Copyright (c) 1996-
|
|
14
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
15
15
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
16
16
|
*
|
|
17
17
|
* src/include/utils/tuplesort.h
|
|
@@ -24,7 +24,9 @@
|
|
|
24
24
|
#include "access/itup.h"
|
|
25
25
|
#include "executor/tuptable.h"
|
|
26
26
|
#include "storage/dsm.h"
|
|
27
|
+
#include "utils/logtape.h"
|
|
27
28
|
#include "utils/relcache.h"
|
|
29
|
+
#include "utils/sortsupport.h"
|
|
28
30
|
|
|
29
31
|
|
|
30
32
|
/*
|
|
@@ -102,6 +104,148 @@ typedef struct TuplesortInstrumentation
|
|
|
102
104
|
int64 spaceUsed; /* space consumption, in kB */
|
|
103
105
|
} TuplesortInstrumentation;
|
|
104
106
|
|
|
107
|
+
/*
|
|
108
|
+
* The objects we actually sort are SortTuple structs. These contain
|
|
109
|
+
* a pointer to the tuple proper (might be a MinimalTuple or IndexTuple),
|
|
110
|
+
* which is a separate palloc chunk --- we assume it is just one chunk and
|
|
111
|
+
* can be freed by a simple pfree() (except during merge, when we use a
|
|
112
|
+
* simple slab allocator). SortTuples also contain the tuple's first key
|
|
113
|
+
* column in Datum/nullflag format, and a source/input tape number that
|
|
114
|
+
* tracks which tape each heap element/slot belongs to during merging.
|
|
115
|
+
*
|
|
116
|
+
* Storing the first key column lets us save heap_getattr or index_getattr
|
|
117
|
+
* calls during tuple comparisons. We could extract and save all the key
|
|
118
|
+
* columns not just the first, but this would increase code complexity and
|
|
119
|
+
* overhead, and wouldn't actually save any comparison cycles in the common
|
|
120
|
+
* case where the first key determines the comparison result. Note that
|
|
121
|
+
* for a pass-by-reference datatype, datum1 points into the "tuple" storage.
|
|
122
|
+
*
|
|
123
|
+
* There is one special case: when the sort support infrastructure provides an
|
|
124
|
+
* "abbreviated key" representation, where the key is (typically) a pass by
|
|
125
|
+
* value proxy for a pass by reference type. In this case, the abbreviated key
|
|
126
|
+
* is stored in datum1 in place of the actual first key column.
|
|
127
|
+
*
|
|
128
|
+
* When sorting single Datums, the data value is represented directly by
|
|
129
|
+
* datum1/isnull1 for pass by value types (or null values). If the datatype is
|
|
130
|
+
* pass-by-reference and isnull1 is false, then "tuple" points to a separately
|
|
131
|
+
* palloc'd data value, otherwise "tuple" is NULL. The value of datum1 is then
|
|
132
|
+
* either the same pointer as "tuple", or is an abbreviated key value as
|
|
133
|
+
* described above. Accordingly, "tuple" is always used in preference to
|
|
134
|
+
* datum1 as the authoritative value for pass-by-reference cases.
|
|
135
|
+
*/
|
|
136
|
+
typedef struct
|
|
137
|
+
{
|
|
138
|
+
void *tuple; /* the tuple itself */
|
|
139
|
+
Datum datum1; /* value of first key column */
|
|
140
|
+
bool isnull1; /* is first key column NULL? */
|
|
141
|
+
int srctape; /* source tape number */
|
|
142
|
+
} SortTuple;
|
|
143
|
+
|
|
144
|
+
typedef int (*SortTupleComparator) (const SortTuple *a, const SortTuple *b,
|
|
145
|
+
Tuplesortstate *state);
|
|
146
|
+
|
|
147
|
+
/*
|
|
148
|
+
* The public part of a Tuple sort operation state. This data structure
|
|
149
|
+
* contains the definition of sort-variant-specific interface methods and
|
|
150
|
+
* the part of Tuple sort operation state required by their implementations.
|
|
151
|
+
*/
|
|
152
|
+
typedef struct
|
|
153
|
+
{
|
|
154
|
+
/*
|
|
155
|
+
* These function pointers decouple the routines that must know what kind
|
|
156
|
+
* of tuple we are sorting from the routines that don't need to know it.
|
|
157
|
+
* They are set up by the tuplesort_begin_xxx routines.
|
|
158
|
+
*
|
|
159
|
+
* Function to compare two tuples; result is per qsort() convention, ie:
|
|
160
|
+
* <0, 0, >0 according as a<b, a=b, a>b. The API must match
|
|
161
|
+
* qsort_arg_comparator.
|
|
162
|
+
*/
|
|
163
|
+
SortTupleComparator comparetup;
|
|
164
|
+
|
|
165
|
+
/*
|
|
166
|
+
* Alter datum1 representation in the SortTuple's array back from the
|
|
167
|
+
* abbreviated key to the first column value.
|
|
168
|
+
*/
|
|
169
|
+
void (*removeabbrev) (Tuplesortstate *state, SortTuple *stups,
|
|
170
|
+
int count);
|
|
171
|
+
|
|
172
|
+
/*
|
|
173
|
+
* Function to write a stored tuple onto tape. The representation of the
|
|
174
|
+
* tuple on tape need not be the same as it is in memory.
|
|
175
|
+
*/
|
|
176
|
+
void (*writetup) (Tuplesortstate *state, LogicalTape *tape,
|
|
177
|
+
SortTuple *stup);
|
|
178
|
+
|
|
179
|
+
/*
|
|
180
|
+
* Function to read a stored tuple from tape back into memory. 'len' is
|
|
181
|
+
* the already-read length of the stored tuple. The tuple is allocated
|
|
182
|
+
* from the slab memory arena, or is palloc'd, see
|
|
183
|
+
* tuplesort_readtup_alloc().
|
|
184
|
+
*/
|
|
185
|
+
void (*readtup) (Tuplesortstate *state, SortTuple *stup,
|
|
186
|
+
LogicalTape *tape, unsigned int len);
|
|
187
|
+
|
|
188
|
+
/*
|
|
189
|
+
* Function to do some specific release of resources for the sort variant.
|
|
190
|
+
* In particular, this function should free everything stored in the "arg"
|
|
191
|
+
* field, which wouldn't be cleared on reset of the Tuple sort memory
|
|
192
|
+
* contexts. This can be NULL if nothing specific needs to be done.
|
|
193
|
+
*/
|
|
194
|
+
void (*freestate) (Tuplesortstate *state);
|
|
195
|
+
|
|
196
|
+
/*
|
|
197
|
+
* The subsequent fields are used in the implementations of the functions
|
|
198
|
+
* above.
|
|
199
|
+
*/
|
|
200
|
+
MemoryContext maincontext; /* memory context for tuple sort metadata that
|
|
201
|
+
* persists across multiple batches */
|
|
202
|
+
MemoryContext sortcontext; /* memory context holding most sort data */
|
|
203
|
+
MemoryContext tuplecontext; /* sub-context of sortcontext for tuple data */
|
|
204
|
+
|
|
205
|
+
/*
|
|
206
|
+
* Whether SortTuple's datum1 and isnull1 members are maintained by the
|
|
207
|
+
* above routines. If not, some sort specializations are disabled.
|
|
208
|
+
*/
|
|
209
|
+
bool haveDatum1;
|
|
210
|
+
|
|
211
|
+
/*
|
|
212
|
+
* The sortKeys variable is used by every case other than the hash index
|
|
213
|
+
* case; it is set by tuplesort_begin_xxx. tupDesc is only used by the
|
|
214
|
+
* MinimalTuple and CLUSTER routines, though.
|
|
215
|
+
*/
|
|
216
|
+
int nKeys; /* number of columns in sort key */
|
|
217
|
+
SortSupport sortKeys; /* array of length nKeys */
|
|
218
|
+
|
|
219
|
+
/*
|
|
220
|
+
* This variable is shared by the single-key MinimalTuple case and the
|
|
221
|
+
* Datum case (which both use qsort_ssup()). Otherwise, it's NULL. The
|
|
222
|
+
* presence of a value in this field is also checked by various sort
|
|
223
|
+
* specialization functions as an optimization when comparing the leading
|
|
224
|
+
* key in a tiebreak situation to determine if there are any subsequent
|
|
225
|
+
* keys to sort on.
|
|
226
|
+
*/
|
|
227
|
+
SortSupport onlyKey;
|
|
228
|
+
|
|
229
|
+
int sortopt; /* Bitmask of flags used to setup sort */
|
|
230
|
+
|
|
231
|
+
bool tuples; /* Can SortTuple.tuple ever be set? */
|
|
232
|
+
|
|
233
|
+
void *arg; /* Specific information for the sort variant */
|
|
234
|
+
} TuplesortPublic;
|
|
235
|
+
|
|
236
|
+
/* Sort parallel code from state for sort__start probes */
|
|
237
|
+
#define PARALLEL_SORT(coordinate) (coordinate == NULL || \
|
|
238
|
+
(coordinate)->sharedsort == NULL ? 0 : \
|
|
239
|
+
(coordinate)->isWorker ? 1 : 2)
|
|
240
|
+
|
|
241
|
+
#define TuplesortstateGetPublic(state) ((TuplesortPublic *) state)
|
|
242
|
+
|
|
243
|
+
/* When using this macro, beware of double evaluation of len */
|
|
244
|
+
#define LogicalTapeReadExact(tape, ptr, len) \
|
|
245
|
+
do { \
|
|
246
|
+
if (LogicalTapeRead(tape, ptr, len) != (size_t) (len)) \
|
|
247
|
+
elog(ERROR, "unexpected end of data"); \
|
|
248
|
+
} while(0)
|
|
105
249
|
|
|
106
250
|
/*
|
|
107
251
|
* We provide multiple interfaces to what is essentially the same code,
|
|
@@ -205,6 +349,49 @@ typedef struct TuplesortInstrumentation
|
|
|
205
349
|
* generated (typically, caller uses a parallel heap scan).
|
|
206
350
|
*/
|
|
207
351
|
|
|
352
|
+
|
|
353
|
+
extern Tuplesortstate *tuplesort_begin_common(int workMem,
|
|
354
|
+
SortCoordinate coordinate,
|
|
355
|
+
int sortopt);
|
|
356
|
+
extern void tuplesort_set_bound(Tuplesortstate *state, int64 bound);
|
|
357
|
+
extern bool tuplesort_used_bound(Tuplesortstate *state);
|
|
358
|
+
extern void tuplesort_puttuple_common(Tuplesortstate *state,
|
|
359
|
+
SortTuple *tuple, bool useAbbrev);
|
|
360
|
+
extern void tuplesort_performsort(Tuplesortstate *state);
|
|
361
|
+
extern bool tuplesort_gettuple_common(Tuplesortstate *state, bool forward,
|
|
362
|
+
SortTuple *stup);
|
|
363
|
+
extern bool tuplesort_skiptuples(Tuplesortstate *state, int64 ntuples,
|
|
364
|
+
bool forward);
|
|
365
|
+
extern void tuplesort_end(Tuplesortstate *state);
|
|
366
|
+
extern void tuplesort_reset(Tuplesortstate *state);
|
|
367
|
+
|
|
368
|
+
extern void tuplesort_get_stats(Tuplesortstate *state,
|
|
369
|
+
TuplesortInstrumentation *stats);
|
|
370
|
+
extern const char *tuplesort_method_name(TuplesortMethod m);
|
|
371
|
+
extern const char *tuplesort_space_type_name(TuplesortSpaceType t);
|
|
372
|
+
|
|
373
|
+
extern int tuplesort_merge_order(int64 allowedMem);
|
|
374
|
+
|
|
375
|
+
extern Size tuplesort_estimate_shared(int nWorkers);
|
|
376
|
+
extern void tuplesort_initialize_shared(Sharedsort *shared, int nWorkers,
|
|
377
|
+
dsm_segment *seg);
|
|
378
|
+
extern void tuplesort_attach_shared(Sharedsort *shared, dsm_segment *seg);
|
|
379
|
+
|
|
380
|
+
/*
|
|
381
|
+
* These routines may only be called if TUPLESORT_RANDOMACCESS was specified
|
|
382
|
+
* during tuplesort_begin_*. Additionally backwards scan in gettuple/getdatum
|
|
383
|
+
* also require TUPLESORT_RANDOMACCESS. Note that parallel sorts do not
|
|
384
|
+
* support random access.
|
|
385
|
+
*/
|
|
386
|
+
extern void tuplesort_rescan(Tuplesortstate *state);
|
|
387
|
+
extern void tuplesort_markpos(Tuplesortstate *state);
|
|
388
|
+
extern void tuplesort_restorepos(Tuplesortstate *state);
|
|
389
|
+
|
|
390
|
+
extern void *tuplesort_readtup_alloc(Tuplesortstate *state, Size tuplen);
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
/* tuplesortvariants.c */
|
|
394
|
+
|
|
208
395
|
extern Tuplesortstate *tuplesort_begin_heap(TupleDesc tupDesc,
|
|
209
396
|
int nkeys, AttrNumber *attNums,
|
|
210
397
|
Oid *sortOperators, Oid *sortCollations,
|
|
@@ -238,9 +425,6 @@ extern Tuplesortstate *tuplesort_begin_datum(Oid datumType,
|
|
|
238
425
|
int workMem, SortCoordinate coordinate,
|
|
239
426
|
int sortopt);
|
|
240
427
|
|
|
241
|
-
extern void tuplesort_set_bound(Tuplesortstate *state, int64 bound);
|
|
242
|
-
extern bool tuplesort_used_bound(Tuplesortstate *state);
|
|
243
|
-
|
|
244
428
|
extern void tuplesort_puttupleslot(Tuplesortstate *state,
|
|
245
429
|
TupleTableSlot *slot);
|
|
246
430
|
extern void tuplesort_putheaptuple(Tuplesortstate *state, HeapTuple tup);
|
|
@@ -250,42 +434,12 @@ extern void tuplesort_putindextuplevalues(Tuplesortstate *state,
|
|
|
250
434
|
extern void tuplesort_putdatum(Tuplesortstate *state, Datum val,
|
|
251
435
|
bool isNull);
|
|
252
436
|
|
|
253
|
-
extern void tuplesort_performsort(Tuplesortstate *state);
|
|
254
|
-
|
|
255
437
|
extern bool tuplesort_gettupleslot(Tuplesortstate *state, bool forward,
|
|
256
438
|
bool copy, TupleTableSlot *slot, Datum *abbrev);
|
|
257
439
|
extern HeapTuple tuplesort_getheaptuple(Tuplesortstate *state, bool forward);
|
|
258
440
|
extern IndexTuple tuplesort_getindextuple(Tuplesortstate *state, bool forward);
|
|
259
|
-
extern bool tuplesort_getdatum(Tuplesortstate *state, bool forward,
|
|
441
|
+
extern bool tuplesort_getdatum(Tuplesortstate *state, bool forward, bool copy,
|
|
260
442
|
Datum *val, bool *isNull, Datum *abbrev);
|
|
261
443
|
|
|
262
|
-
extern bool tuplesort_skiptuples(Tuplesortstate *state, int64 ntuples,
|
|
263
|
-
bool forward);
|
|
264
|
-
|
|
265
|
-
extern void tuplesort_end(Tuplesortstate *state);
|
|
266
|
-
|
|
267
|
-
extern void tuplesort_reset(Tuplesortstate *state);
|
|
268
|
-
|
|
269
|
-
extern void tuplesort_get_stats(Tuplesortstate *state,
|
|
270
|
-
TuplesortInstrumentation *stats);
|
|
271
|
-
extern const char *tuplesort_method_name(TuplesortMethod m);
|
|
272
|
-
extern const char *tuplesort_space_type_name(TuplesortSpaceType t);
|
|
273
|
-
|
|
274
|
-
extern int tuplesort_merge_order(int64 allowedMem);
|
|
275
|
-
|
|
276
|
-
extern Size tuplesort_estimate_shared(int nworkers);
|
|
277
|
-
extern void tuplesort_initialize_shared(Sharedsort *shared, int nWorkers,
|
|
278
|
-
dsm_segment *seg);
|
|
279
|
-
extern void tuplesort_attach_shared(Sharedsort *shared, dsm_segment *seg);
|
|
280
|
-
|
|
281
|
-
/*
|
|
282
|
-
* These routines may only be called if TUPLESORT_RANDOMACCESS was specified
|
|
283
|
-
* during tuplesort_begin_*. Additionally backwards scan in gettuple/getdatum
|
|
284
|
-
* also require TUPLESORT_RANDOMACCESS. Note that parallel sorts do not
|
|
285
|
-
* support random access.
|
|
286
|
-
*/
|
|
287
|
-
extern void tuplesort_rescan(Tuplesortstate *state);
|
|
288
|
-
extern void tuplesort_markpos(Tuplesortstate *state);
|
|
289
|
-
extern void tuplesort_restorepos(Tuplesortstate *state);
|
|
290
444
|
|
|
291
445
|
#endif /* TUPLESORT_H */
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* Also, we have changed the API to return tuples in TupleTableSlots,
|
|
22
22
|
* so that there is a check to prevent attempted access to system columns.
|
|
23
23
|
*
|
|
24
|
-
* Portions Copyright (c) 1996-
|
|
24
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
25
25
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
26
26
|
*
|
|
27
27
|
* src/include/utils/tuplestore.h
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* The type cache exists to speed lookup of certain information about data
|
|
7
7
|
* types that is not directly available from a type's pg_type row.
|
|
8
8
|
*
|
|
9
|
-
* Portions Copyright (c) 1996-
|
|
9
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
10
10
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
11
11
|
*
|
|
12
12
|
* src/include/utils/typcache.h
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* varlena.h
|
|
4
4
|
* Functions for the variable-length built-in types.
|
|
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
|
* src/include/utils/varlena.h
|
|
@@ -38,4 +38,16 @@ extern text *replace_text_regexp(text *src_text, text *pattern_text,
|
|
|
38
38
|
int cflags, Oid collation,
|
|
39
39
|
int search_start, int n);
|
|
40
40
|
|
|
41
|
+
typedef struct ClosestMatchState
|
|
42
|
+
{
|
|
43
|
+
const char *source;
|
|
44
|
+
int min_d;
|
|
45
|
+
int max_d;
|
|
46
|
+
const char *match;
|
|
47
|
+
} ClosestMatchState;
|
|
48
|
+
|
|
49
|
+
extern void initClosestMatch(ClosestMatchState *state, const char *source, int max_d);
|
|
50
|
+
extern void updateClosestMatch(ClosestMatchState *state, const char *candidate);
|
|
51
|
+
extern const char *getClosestMatch(ClosestMatchState *state);
|
|
52
|
+
|
|
41
53
|
#endif
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* wait_event.h
|
|
3
3
|
* Definitions related to wait event reporting
|
|
4
4
|
*
|
|
5
|
-
* Copyright (c) 2001-
|
|
5
|
+
* Copyright (c) 2001-2023, PostgreSQL Global Development Group
|
|
6
6
|
*
|
|
7
7
|
* src/include/utils/wait_event.h
|
|
8
8
|
* ----------
|
|
@@ -42,6 +42,7 @@ typedef enum
|
|
|
42
42
|
WAIT_EVENT_CHECKPOINTER_MAIN,
|
|
43
43
|
WAIT_EVENT_LOGICAL_APPLY_MAIN,
|
|
44
44
|
WAIT_EVENT_LOGICAL_LAUNCHER_MAIN,
|
|
45
|
+
WAIT_EVENT_LOGICAL_PARALLEL_APPLY_MAIN,
|
|
45
46
|
WAIT_EVENT_RECOVERY_WAL_STREAM,
|
|
46
47
|
WAIT_EVENT_SYSLOGGER_MAIN,
|
|
47
48
|
WAIT_EVENT_WAL_RECEIVER_MAIN,
|
|
@@ -97,14 +98,16 @@ typedef enum
|
|
|
97
98
|
WAIT_EVENT_HASH_BUILD_ELECT,
|
|
98
99
|
WAIT_EVENT_HASH_BUILD_HASH_INNER,
|
|
99
100
|
WAIT_EVENT_HASH_BUILD_HASH_OUTER,
|
|
100
|
-
WAIT_EVENT_HASH_GROW_BATCHES_ALLOCATE,
|
|
101
101
|
WAIT_EVENT_HASH_GROW_BATCHES_DECIDE,
|
|
102
102
|
WAIT_EVENT_HASH_GROW_BATCHES_ELECT,
|
|
103
103
|
WAIT_EVENT_HASH_GROW_BATCHES_FINISH,
|
|
104
|
+
WAIT_EVENT_HASH_GROW_BATCHES_REALLOCATE,
|
|
104
105
|
WAIT_EVENT_HASH_GROW_BATCHES_REPARTITION,
|
|
105
|
-
WAIT_EVENT_HASH_GROW_BUCKETS_ALLOCATE,
|
|
106
106
|
WAIT_EVENT_HASH_GROW_BUCKETS_ELECT,
|
|
107
|
+
WAIT_EVENT_HASH_GROW_BUCKETS_REALLOCATE,
|
|
107
108
|
WAIT_EVENT_HASH_GROW_BUCKETS_REINSERT,
|
|
109
|
+
WAIT_EVENT_LOGICAL_APPLY_SEND_DATA,
|
|
110
|
+
WAIT_EVENT_LOGICAL_PARALLEL_APPLY_STATE_CHANGE,
|
|
108
111
|
WAIT_EVENT_LOGICAL_SYNC_DATA,
|
|
109
112
|
WAIT_EVENT_LOGICAL_SYNC_STATE_CHANGE,
|
|
110
113
|
WAIT_EVENT_MQ_INTERNAL,
|
|
@@ -145,6 +148,7 @@ typedef enum
|
|
|
145
148
|
WAIT_EVENT_RECOVERY_APPLY_DELAY,
|
|
146
149
|
WAIT_EVENT_RECOVERY_RETRIEVE_RETRY_INTERVAL,
|
|
147
150
|
WAIT_EVENT_REGISTER_SYNC_REQUEST,
|
|
151
|
+
WAIT_EVENT_SPIN_DELAY,
|
|
148
152
|
WAIT_EVENT_VACUUM_DELAY,
|
|
149
153
|
WAIT_EVENT_VACUUM_TRUNCATE
|
|
150
154
|
} WaitEventTimeout;
|
|
@@ -178,6 +182,7 @@ typedef enum
|
|
|
178
182
|
WAIT_EVENT_DATA_FILE_SYNC,
|
|
179
183
|
WAIT_EVENT_DATA_FILE_TRUNCATE,
|
|
180
184
|
WAIT_EVENT_DATA_FILE_WRITE,
|
|
185
|
+
WAIT_EVENT_DSM_ALLOCATE,
|
|
181
186
|
WAIT_EVENT_DSM_FILL_ZERO_WRITE,
|
|
182
187
|
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_READ,
|
|
183
188
|
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_SYNC,
|
|
@@ -193,7 +198,7 @@ typedef enum
|
|
|
193
198
|
WAIT_EVENT_LOGICAL_REWRITE_TRUNCATE,
|
|
194
199
|
WAIT_EVENT_LOGICAL_REWRITE_WRITE,
|
|
195
200
|
WAIT_EVENT_RELATION_MAP_READ,
|
|
196
|
-
|
|
201
|
+
WAIT_EVENT_RELATION_MAP_REPLACE,
|
|
197
202
|
WAIT_EVENT_RELATION_MAP_WRITE,
|
|
198
203
|
WAIT_EVENT_REORDER_BUFFER_READ,
|
|
199
204
|
WAIT_EVENT_REORDER_BUFFER_WRITE,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Declarations for XML data type support.
|
|
5
5
|
*
|
|
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/utils/xml.h
|
|
@@ -47,8 +47,17 @@ typedef enum
|
|
|
47
47
|
/* struct PgXmlErrorContext is private to xml.c */
|
|
48
48
|
typedef struct PgXmlErrorContext PgXmlErrorContext;
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
static inline xmltype *
|
|
51
|
+
DatumGetXmlP(Datum X)
|
|
52
|
+
{
|
|
53
|
+
return (xmltype *) PG_DETOAST_DATUM(X);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
static inline Datum
|
|
57
|
+
XmlPGetDatum(const xmltype *X)
|
|
58
|
+
{
|
|
59
|
+
return PointerGetDatum(X);
|
|
60
|
+
}
|
|
52
61
|
|
|
53
62
|
#define PG_GETARG_XML_P(n) DatumGetXmlP(PG_GETARG_DATUM(n))
|
|
54
63
|
#define PG_RETURN_XML_P(x) PG_RETURN_POINTER(x)
|
|
@@ -64,11 +73,12 @@ extern xmltype *xmlconcat(List *args);
|
|
|
64
73
|
extern xmltype *xmlelement(XmlExpr *xexpr,
|
|
65
74
|
Datum *named_argvalue, bool *named_argnull,
|
|
66
75
|
Datum *argvalue, bool *argnull);
|
|
67
|
-
extern xmltype *xmlparse(text *data, XmlOptionType
|
|
76
|
+
extern xmltype *xmlparse(text *data, XmlOptionType xmloption_arg, bool preserve_whitespace);
|
|
68
77
|
extern xmltype *xmlpi(const char *target, text *arg, bool arg_is_null, bool *result_is_null);
|
|
69
78
|
extern xmltype *xmlroot(xmltype *data, text *version, int standalone);
|
|
70
79
|
extern bool xml_is_document(xmltype *arg);
|
|
71
|
-
extern text *
|
|
80
|
+
extern text *xmltotext_with_options(xmltype *data, XmlOptionType xmloption_arg,
|
|
81
|
+
bool indent);
|
|
72
82
|
extern char *escape_xml(const char *str);
|
|
73
83
|
|
|
74
84
|
extern char *map_sql_identifier_to_xml_name(const char *ident, bool fully_escaped, bool escape_period);
|