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
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* pg_wchar.h
|
|
4
4
|
* multibyte-character support
|
|
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/mb/pg_wchar.h
|
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
#ifndef PG_WCHAR_H
|
|
20
20
|
#define PG_WCHAR_H
|
|
21
21
|
|
|
22
|
+
#include "port/simd.h"
|
|
23
|
+
|
|
22
24
|
/*
|
|
23
25
|
* The pg_wchar type
|
|
24
26
|
*/
|
|
@@ -604,11 +606,11 @@ extern int pg_encoding_wchar2mb_with_len(int encoding,
|
|
|
604
606
|
extern int pg_char_and_wchar_strcmp(const char *s1, const pg_wchar *s2);
|
|
605
607
|
extern int pg_wchar_strncmp(const pg_wchar *s1, const pg_wchar *s2, size_t n);
|
|
606
608
|
extern int pg_char_and_wchar_strncmp(const char *s1, const pg_wchar *s2, size_t n);
|
|
607
|
-
extern size_t pg_wchar_strlen(const pg_wchar *
|
|
609
|
+
extern size_t pg_wchar_strlen(const pg_wchar *str);
|
|
608
610
|
extern int pg_mblen(const char *mbstr);
|
|
609
611
|
extern int pg_dsplen(const char *mbstr);
|
|
610
612
|
extern int pg_mbstrlen(const char *mbstr);
|
|
611
|
-
extern int pg_mbstrlen_with_len(const char *mbstr, int
|
|
613
|
+
extern int pg_mbstrlen_with_len(const char *mbstr, int limit);
|
|
612
614
|
extern int pg_mbcliplen(const char *mbstr, int len, int limit);
|
|
613
615
|
extern int pg_encoding_mbcliplen(int encoding, const char *mbstr,
|
|
614
616
|
int len, int limit);
|
|
@@ -639,7 +641,7 @@ extern int pg_do_encoding_conversion_buf(Oid proc,
|
|
|
639
641
|
int src_encoding,
|
|
640
642
|
int dest_encoding,
|
|
641
643
|
unsigned char *src, int srclen,
|
|
642
|
-
unsigned char *
|
|
644
|
+
unsigned char *dest, int destlen,
|
|
643
645
|
bool noError);
|
|
644
646
|
|
|
645
647
|
extern char *pg_client_to_server(const char *s, int len);
|
|
@@ -648,6 +650,7 @@ extern char *pg_any_to_server(const char *s, int len, int encoding);
|
|
|
648
650
|
extern char *pg_server_to_any(const char *s, int len, int encoding);
|
|
649
651
|
|
|
650
652
|
extern void pg_unicode_to_server(pg_wchar c, unsigned char *s);
|
|
653
|
+
extern bool pg_unicode_to_server_noerror(pg_wchar c, unsigned char *s);
|
|
651
654
|
|
|
652
655
|
extern unsigned short BIG5toCNS(unsigned short big5, unsigned char *lc);
|
|
653
656
|
extern unsigned short CNStoBIG5(unsigned short cns, unsigned char lc);
|
|
@@ -704,24 +707,28 @@ extern WCHAR *pgwin32_message_to_UTF16(const char *str, int len, int *utf16len);
|
|
|
704
707
|
* Verify a chunk of bytes for valid ASCII.
|
|
705
708
|
*
|
|
706
709
|
* Returns false if the input contains any zero bytes or bytes with the
|
|
707
|
-
* high-bit set. Input len must be a multiple of 8.
|
|
710
|
+
* high-bit set. Input len must be a multiple of the chunk size (8 or 16).
|
|
708
711
|
*/
|
|
709
712
|
static inline bool
|
|
710
713
|
is_valid_ascii(const unsigned char *s, int len)
|
|
711
714
|
{
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
+
const unsigned char *const s_end = s + len;
|
|
716
|
+
Vector8 chunk;
|
|
717
|
+
Vector8 highbit_cum = vector8_broadcast(0);
|
|
718
|
+
#ifdef USE_NO_SIMD
|
|
719
|
+
Vector8 zero_cum = vector8_broadcast(0x80);
|
|
720
|
+
#endif
|
|
715
721
|
|
|
716
722
|
Assert(len % sizeof(chunk) == 0);
|
|
717
723
|
|
|
718
|
-
while (
|
|
724
|
+
while (s < s_end)
|
|
719
725
|
{
|
|
720
|
-
|
|
726
|
+
vector8_load(&chunk, s);
|
|
727
|
+
|
|
728
|
+
/* Capture any zero bytes in this chunk. */
|
|
729
|
+
#ifdef USE_NO_SIMD
|
|
721
730
|
|
|
722
731
|
/*
|
|
723
|
-
* Capture any zero bytes in this chunk.
|
|
724
|
-
*
|
|
725
732
|
* First, add 0x7f to each byte. This sets the high bit in each byte,
|
|
726
733
|
* unless it was a zero. If any resulting high bits are zero, the
|
|
727
734
|
* corresponding high bits in the zero accumulator will be cleared.
|
|
@@ -732,22 +739,32 @@ is_valid_ascii(const unsigned char *s, int len)
|
|
|
732
739
|
* any input bytes did have the high bit set, it doesn't matter
|
|
733
740
|
* because we check for those separately.
|
|
734
741
|
*/
|
|
735
|
-
zero_cum &= (chunk +
|
|
742
|
+
zero_cum &= (chunk + vector8_broadcast(0x7F));
|
|
743
|
+
#else
|
|
736
744
|
|
|
737
|
-
/*
|
|
738
|
-
|
|
745
|
+
/*
|
|
746
|
+
* Set all bits in each lane of the highbit accumulator where input
|
|
747
|
+
* bytes are zero.
|
|
748
|
+
*/
|
|
749
|
+
highbit_cum = vector8_or(highbit_cum,
|
|
750
|
+
vector8_eq(chunk, vector8_broadcast(0)));
|
|
751
|
+
#endif
|
|
752
|
+
|
|
753
|
+
/* Capture all set bits in this chunk. */
|
|
754
|
+
highbit_cum = vector8_or(highbit_cum, chunk);
|
|
739
755
|
|
|
740
756
|
s += sizeof(chunk);
|
|
741
|
-
len -= sizeof(chunk);
|
|
742
757
|
}
|
|
743
758
|
|
|
744
759
|
/* Check if any high bits in the high bit accumulator got set. */
|
|
745
|
-
if (highbit_cum
|
|
760
|
+
if (vector8_is_highbit_set(highbit_cum))
|
|
746
761
|
return false;
|
|
747
762
|
|
|
763
|
+
#ifdef USE_NO_SIMD
|
|
748
764
|
/* Check if any high bits in the zero accumulator got cleared. */
|
|
749
|
-
if (zero_cum !=
|
|
765
|
+
if (zero_cum != vector8_broadcast(0x80))
|
|
750
766
|
return false;
|
|
767
|
+
#endif
|
|
751
768
|
|
|
752
769
|
return true;
|
|
753
770
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* stringinfo_mb.h
|
|
4
4
|
* multibyte support for StringInfo
|
|
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/mb/stringinfo_mb.h
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* Over time, this has also become the preferred place for widely known
|
|
11
11
|
* resource-limitation stuff, such as work_mem and check_stack_depth().
|
|
12
12
|
*
|
|
13
|
-
* Portions Copyright (c) 1996-
|
|
13
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
14
14
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
15
15
|
*
|
|
16
16
|
* src/include/miscadmin.h
|
|
@@ -167,7 +167,7 @@ extern PGDLLIMPORT bool IsUnderPostmaster;
|
|
|
167
167
|
extern PGDLLIMPORT bool IsBackgroundWorker;
|
|
168
168
|
extern PGDLLIMPORT bool IsBinaryUpgrade;
|
|
169
169
|
|
|
170
|
-
extern PGDLLIMPORT __thread
|
|
170
|
+
extern PGDLLIMPORT __thread bool ExitOnAnyError;
|
|
171
171
|
|
|
172
172
|
extern PGDLLIMPORT char *DataDir;
|
|
173
173
|
extern PGDLLIMPORT int data_directory_mode;
|
|
@@ -263,6 +263,15 @@ extern PGDLLIMPORT double hash_mem_multiplier;
|
|
|
263
263
|
extern PGDLLIMPORT int maintenance_work_mem;
|
|
264
264
|
extern PGDLLIMPORT int max_parallel_maintenance_workers;
|
|
265
265
|
|
|
266
|
+
/*
|
|
267
|
+
* Upper and lower hard limits for the buffer access strategy ring size
|
|
268
|
+
* specified by the VacuumBufferUsageLimit GUC and BUFFER_USAGE_LIMIT option
|
|
269
|
+
* to VACUUM and ANALYZE.
|
|
270
|
+
*/
|
|
271
|
+
#define MIN_BAS_VAC_RING_SIZE_KB 128
|
|
272
|
+
#define MAX_BAS_VAC_RING_SIZE_KB (16 * 1024 * 1024)
|
|
273
|
+
|
|
274
|
+
extern PGDLLIMPORT int VacuumBufferUsageLimit;
|
|
266
275
|
extern PGDLLIMPORT int VacuumCostPageHit;
|
|
267
276
|
extern PGDLLIMPORT int VacuumCostPageMiss;
|
|
268
277
|
extern PGDLLIMPORT int VacuumCostPageDirty;
|
|
@@ -279,15 +288,7 @@ extern PGDLLIMPORT bool VacuumCostActive;
|
|
|
279
288
|
|
|
280
289
|
/* in tcop/postgres.c */
|
|
281
290
|
|
|
282
|
-
#if defined(__ia64__) || defined(__ia64)
|
|
283
|
-
typedef struct
|
|
284
|
-
{
|
|
285
|
-
char *stack_base_ptr;
|
|
286
|
-
char *register_stack_base_ptr;
|
|
287
|
-
} pg_stack_base_t;
|
|
288
|
-
#else
|
|
289
291
|
typedef char *pg_stack_base_t;
|
|
290
|
-
#endif
|
|
291
292
|
|
|
292
293
|
extern pg_stack_base_t set_stack_base(void);
|
|
293
294
|
extern void restore_stack_base(pg_stack_base_t base);
|
|
@@ -299,7 +300,7 @@ extern void PreventCommandIfReadOnly(const char *cmdname);
|
|
|
299
300
|
extern void PreventCommandIfParallelMode(const char *cmdname);
|
|
300
301
|
extern void PreventCommandDuringRecovery(const char *cmdname);
|
|
301
302
|
|
|
302
|
-
/* in utils/misc/
|
|
303
|
+
/* in utils/misc/guc_tables.c */
|
|
303
304
|
extern PGDLLIMPORT int trace_recovery_messages;
|
|
304
305
|
extern int trace_recovery(int trace_level);
|
|
305
306
|
|
|
@@ -318,26 +319,30 @@ extern PGDLLIMPORT char *DatabasePath;
|
|
|
318
319
|
/* now in utils/init/miscinit.c */
|
|
319
320
|
extern void InitPostmasterChild(void);
|
|
320
321
|
extern void InitStandaloneProcess(const char *argv0);
|
|
322
|
+
extern void InitProcessLocalLatch(void);
|
|
321
323
|
extern void SwitchToSharedLatch(void);
|
|
322
324
|
extern void SwitchBackToLocalLatch(void);
|
|
323
325
|
|
|
324
326
|
typedef enum BackendType
|
|
325
327
|
{
|
|
326
328
|
B_INVALID = 0,
|
|
329
|
+
B_ARCHIVER,
|
|
327
330
|
B_AUTOVAC_LAUNCHER,
|
|
328
331
|
B_AUTOVAC_WORKER,
|
|
329
332
|
B_BACKEND,
|
|
330
333
|
B_BG_WORKER,
|
|
331
334
|
B_BG_WRITER,
|
|
332
335
|
B_CHECKPOINTER,
|
|
336
|
+
B_LOGGER,
|
|
337
|
+
B_STANDALONE_BACKEND,
|
|
333
338
|
B_STARTUP,
|
|
334
339
|
B_WAL_RECEIVER,
|
|
335
340
|
B_WAL_SENDER,
|
|
336
341
|
B_WAL_WRITER,
|
|
337
|
-
B_ARCHIVER,
|
|
338
|
-
B_LOGGER,
|
|
339
342
|
} BackendType;
|
|
340
343
|
|
|
344
|
+
#define BACKEND_NUM_TYPES (B_WAL_WRITER + 1)
|
|
345
|
+
|
|
341
346
|
extern PGDLLIMPORT BackendType MyBackendType;
|
|
342
347
|
|
|
343
348
|
extern const char *GetBackendTypeDesc(BackendType backendType);
|
|
@@ -359,11 +364,14 @@ extern bool InSecurityRestrictedOperation(void);
|
|
|
359
364
|
extern bool InNoForceRLSOperation(void);
|
|
360
365
|
extern void GetUserIdAndContext(Oid *userid, bool *sec_def_context);
|
|
361
366
|
extern void SetUserIdAndContext(Oid userid, bool sec_def_context);
|
|
362
|
-
extern void InitializeSessionUserId(const char *rolename, Oid
|
|
367
|
+
extern void InitializeSessionUserId(const char *rolename, Oid roleid);
|
|
363
368
|
extern void InitializeSessionUserIdStandalone(void);
|
|
364
369
|
extern void SetSessionAuthorization(Oid userid, bool is_superuser);
|
|
365
370
|
extern Oid GetCurrentRoleId(void);
|
|
366
371
|
extern void SetCurrentRoleId(Oid roleid, bool is_superuser);
|
|
372
|
+
extern void InitializeSystemUser(const char *authn_id,
|
|
373
|
+
const char *auth_method);
|
|
374
|
+
extern const char *GetSystemUser(void);
|
|
367
375
|
|
|
368
376
|
/* in utils/misc/superuser.c */
|
|
369
377
|
extern bool superuser(void); /* current user is superuser */
|
|
@@ -411,7 +419,7 @@ extern PGDLLIMPORT ProcessingMode Mode;
|
|
|
411
419
|
|
|
412
420
|
#define SetProcessingMode(mode) \
|
|
413
421
|
do { \
|
|
414
|
-
|
|
422
|
+
Assert((mode) == BootstrapProcessing || \
|
|
415
423
|
(mode) == InitProcessing || \
|
|
416
424
|
(mode) == NormalProcessing); \
|
|
417
425
|
Mode = (mode); \
|
|
@@ -489,6 +497,10 @@ extern bool has_rolreplication(Oid roleid);
|
|
|
489
497
|
typedef void (*shmem_request_hook_type) (void);
|
|
490
498
|
extern PGDLLIMPORT shmem_request_hook_type shmem_request_hook;
|
|
491
499
|
|
|
500
|
+
extern Size EstimateClientConnectionInfoSpace(void);
|
|
501
|
+
extern void SerializeClientConnectionInfo(Size maxsize, char *start_address);
|
|
502
|
+
extern void RestoreClientConnectionInfo(char *conninfo);
|
|
503
|
+
|
|
492
504
|
/* in executor/nodeHash.c */
|
|
493
505
|
extern size_t get_hash_memory_limit(void);
|
|
494
506
|
|
|
@@ -5,13 +5,11 @@
|
|
|
5
5
|
*
|
|
6
6
|
* A bitmap set can represent any set of nonnegative integers, although
|
|
7
7
|
* it is mainly intended for sets where the maximum value is not large,
|
|
8
|
-
* say at most a few hundred. By convention,
|
|
9
|
-
*
|
|
10
|
-
* that this is not the only representation of the empty set. Use
|
|
11
|
-
* bms_is_empty() in preference to testing for NULL.)
|
|
8
|
+
* say at most a few hundred. By convention, we always represent the
|
|
9
|
+
* empty set by a NULL pointer.
|
|
12
10
|
*
|
|
13
11
|
*
|
|
14
|
-
* Copyright (c) 2003-
|
|
12
|
+
* Copyright (c) 2003-2023, PostgreSQL Global Development Group
|
|
15
13
|
*
|
|
16
14
|
* src/include/nodes/bitmapset.h
|
|
17
15
|
*
|
|
@@ -20,6 +18,8 @@
|
|
|
20
18
|
#ifndef BITMAPSET_H
|
|
21
19
|
#define BITMAPSET_H
|
|
22
20
|
|
|
21
|
+
#include "nodes/nodes.h"
|
|
22
|
+
|
|
23
23
|
/*
|
|
24
24
|
* Forward decl to save including pg_list.h
|
|
25
25
|
*/
|
|
@@ -48,6 +48,9 @@ typedef int32 signedbitmapword; /* must be the matching signed type */
|
|
|
48
48
|
|
|
49
49
|
typedef struct Bitmapset
|
|
50
50
|
{
|
|
51
|
+
pg_node_attr(custom_copy_equal, special_read_write, no_query_jumble)
|
|
52
|
+
|
|
53
|
+
NodeTag type;
|
|
51
54
|
int nwords; /* number of words in array */
|
|
52
55
|
bitmapword words[FLEXIBLE_ARRAY_MEMBER]; /* really [nwords] */
|
|
53
56
|
} Bitmapset;
|
|
@@ -97,7 +100,9 @@ extern int bms_num_members(const Bitmapset *a);
|
|
|
97
100
|
|
|
98
101
|
/* optimized tests when we don't need to know exact membership count: */
|
|
99
102
|
extern BMS_Membership bms_membership(const Bitmapset *a);
|
|
100
|
-
|
|
103
|
+
|
|
104
|
+
/* NULL is now the only allowed representation of an empty bitmapset */
|
|
105
|
+
#define bms_is_empty(a) ((a) == NULL)
|
|
101
106
|
|
|
102
107
|
/* these routines recycle (modify or free) their non-const inputs: */
|
|
103
108
|
|
|
@@ -110,7 +115,6 @@ extern Bitmapset *bms_del_members(Bitmapset *a, const Bitmapset *b);
|
|
|
110
115
|
extern Bitmapset *bms_join(Bitmapset *a, Bitmapset *b);
|
|
111
116
|
|
|
112
117
|
/* support for iterating through the integer elements of a set: */
|
|
113
|
-
extern int bms_first_member(Bitmapset *a);
|
|
114
118
|
extern int bms_next_member(const Bitmapset *a, int prevbit);
|
|
115
119
|
extern int bms_prev_member(const Bitmapset *a, int prevbit);
|
|
116
120
|
|
|
@@ -3,8 +3,23 @@
|
|
|
3
3
|
* execnodes.h
|
|
4
4
|
* definitions for executor state nodes
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Most plan node types declared in plannodes.h have a corresponding
|
|
7
|
+
* execution-state node type declared here. An exception is that
|
|
8
|
+
* expression nodes (subtypes of Expr) are usually represented by steps
|
|
9
|
+
* of an ExprState, and fully handled within execExpr* - but sometimes
|
|
10
|
+
* their state needs to be shared with other parts of the executor, as
|
|
11
|
+
* for example with SubPlanState, which nodeSubplan.c has to modify.
|
|
12
|
+
*
|
|
13
|
+
* Node types declared in this file do not have any copy/equal/out/read
|
|
14
|
+
* support. (That is currently hard-wired in gen_node_support.pl, rather
|
|
15
|
+
* than being explicitly represented by pg_node_attr decorations here.)
|
|
16
|
+
* There is no need for copy, equal, or read support for executor trees.
|
|
17
|
+
* Output support could be useful for debugging; but there are a lot of
|
|
18
|
+
* specialized fields that would require custom code, so for now it's
|
|
19
|
+
* not provided.
|
|
20
|
+
*
|
|
21
|
+
*
|
|
22
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
23
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
24
|
*
|
|
10
25
|
* src/include/nodes/execnodes.h
|
|
@@ -47,7 +62,7 @@ struct LogicalTapeSet;
|
|
|
47
62
|
/* ----------------
|
|
48
63
|
* ExprState node
|
|
49
64
|
*
|
|
50
|
-
* ExprState
|
|
65
|
+
* ExprState represents the evaluation state for a whole expression tree.
|
|
51
66
|
* It contains instructions (in ->steps) to evaluate the expression.
|
|
52
67
|
* ----------------
|
|
53
68
|
*/
|
|
@@ -146,6 +161,7 @@ typedef struct ExprState
|
|
|
146
161
|
* IndexUnchanged aminsert hint, cached for retail inserts
|
|
147
162
|
* Concurrent are we doing a concurrent index build?
|
|
148
163
|
* BrokenHotChain did we detect any broken HOT chains?
|
|
164
|
+
* Summarizing is it a summarizing index?
|
|
149
165
|
* ParallelWorkers # of workers requested (excludes leader)
|
|
150
166
|
* Am Oid of index AM
|
|
151
167
|
* AmCache private cache area for index AM
|
|
@@ -179,6 +195,7 @@ typedef struct IndexInfo
|
|
|
179
195
|
bool ii_IndexUnchanged;
|
|
180
196
|
bool ii_Concurrent;
|
|
181
197
|
bool ii_BrokenHotChain;
|
|
198
|
+
bool ii_Summarizing;
|
|
182
199
|
int ii_ParallelWorkers;
|
|
183
200
|
Oid ii_Am;
|
|
184
201
|
void *ii_AmCache;
|
|
@@ -447,6 +464,9 @@ typedef struct ResultRelInfo
|
|
|
447
464
|
*/
|
|
448
465
|
AttrNumber ri_RowIdAttNo;
|
|
449
466
|
|
|
467
|
+
/* For UPDATE, attnums of generated columns to be computed */
|
|
468
|
+
Bitmapset *ri_extraUpdatedCols;
|
|
469
|
+
|
|
450
470
|
/* Projection to generate new tuple in an INSERT/UPDATE */
|
|
451
471
|
ProjectionInfo *ri_projectNew;
|
|
452
472
|
/* Slot to hold that tuple */
|
|
@@ -498,11 +518,13 @@ typedef struct ResultRelInfo
|
|
|
498
518
|
/* array of constraint-checking expr states */
|
|
499
519
|
ExprState **ri_ConstraintExprs;
|
|
500
520
|
|
|
501
|
-
/*
|
|
502
|
-
ExprState **
|
|
521
|
+
/* arrays of stored generated columns expr states, for INSERT and UPDATE */
|
|
522
|
+
ExprState **ri_GeneratedExprsI;
|
|
523
|
+
ExprState **ri_GeneratedExprsU;
|
|
503
524
|
|
|
504
525
|
/* number of stored generated columns we need to compute */
|
|
505
|
-
int
|
|
526
|
+
int ri_NumGeneratedNeededI;
|
|
527
|
+
int ri_NumGeneratedNeededU;
|
|
506
528
|
|
|
507
529
|
/* list of RETURNING expressions */
|
|
508
530
|
List *ri_returningList;
|
|
@@ -523,6 +545,21 @@ typedef struct ResultRelInfo
|
|
|
523
545
|
/* partition check expression state (NULL if not set up yet) */
|
|
524
546
|
ExprState *ri_PartitionCheckExpr;
|
|
525
547
|
|
|
548
|
+
/*
|
|
549
|
+
* Map to convert child result relation tuples to the format of the table
|
|
550
|
+
* actually mentioned in the query (called "root"). Computed only if
|
|
551
|
+
* needed. A NULL map value indicates that no conversion is needed, so we
|
|
552
|
+
* must have a separate flag to show if the map has been computed.
|
|
553
|
+
*/
|
|
554
|
+
TupleConversionMap *ri_ChildToRootMap;
|
|
555
|
+
bool ri_ChildToRootMapValid;
|
|
556
|
+
|
|
557
|
+
/*
|
|
558
|
+
* As above, but in the other direction.
|
|
559
|
+
*/
|
|
560
|
+
TupleConversionMap *ri_RootToChildMap;
|
|
561
|
+
bool ri_RootToChildMapValid;
|
|
562
|
+
|
|
526
563
|
/*
|
|
527
564
|
* Information needed by tuple routing target relations
|
|
528
565
|
*
|
|
@@ -531,23 +568,12 @@ typedef struct ResultRelInfo
|
|
|
531
568
|
* mentioned in the query is an inherited table, nor when tuple routing is
|
|
532
569
|
* not needed.
|
|
533
570
|
*
|
|
534
|
-
*
|
|
535
|
-
*
|
|
536
|
-
* format than the root table.
|
|
571
|
+
* PartitionTupleSlot is non-NULL if RootToChild conversion is needed and
|
|
572
|
+
* the relation is a partition.
|
|
537
573
|
*/
|
|
538
574
|
struct ResultRelInfo *ri_RootResultRelInfo;
|
|
539
|
-
TupleConversionMap *ri_RootToPartitionMap;
|
|
540
575
|
TupleTableSlot *ri_PartitionTupleSlot;
|
|
541
576
|
|
|
542
|
-
/*
|
|
543
|
-
* Map to convert child result relation tuples to the format of the table
|
|
544
|
-
* actually mentioned in the query (called "root"). Computed only if
|
|
545
|
-
* needed. A NULL map value indicates that no conversion is needed, so we
|
|
546
|
-
* must have a separate flag to show if the map has been computed.
|
|
547
|
-
*/
|
|
548
|
-
TupleConversionMap *ri_ChildToRootMap;
|
|
549
|
-
bool ri_ChildToRootMapValid;
|
|
550
|
-
|
|
551
577
|
/* for use by copyfrom.c when performing multi-inserts */
|
|
552
578
|
struct CopyMultiInsertBuffer *ri_CopyMultiInsertBuffer;
|
|
553
579
|
|
|
@@ -595,6 +621,7 @@ typedef struct EState
|
|
|
595
621
|
* pointers, or NULL if not yet opened */
|
|
596
622
|
struct ExecRowMark **es_rowmarks; /* Array of per-range-table-entry
|
|
597
623
|
* ExecRowMarks, or NULL if none */
|
|
624
|
+
List *es_rteperminfos; /* List of RTEPermissionInfo */
|
|
598
625
|
PlannedStmt *es_plannedstmt; /* link to top of plan tree */
|
|
599
626
|
const char *es_sourceText; /* Source text from QueryDesc */
|
|
600
627
|
|
|
@@ -633,7 +660,10 @@ typedef struct EState
|
|
|
633
660
|
|
|
634
661
|
List *es_tupleTable; /* List of TupleTableSlots */
|
|
635
662
|
|
|
636
|
-
uint64 es_processed; /* # of tuples processed
|
|
663
|
+
uint64 es_processed; /* # of tuples processed during one
|
|
664
|
+
* ExecutorRun() call. */
|
|
665
|
+
uint64 es_total_processed; /* total # of tuples aggregated across all
|
|
666
|
+
* ExecutorRun() calls. */
|
|
637
667
|
|
|
638
668
|
int es_top_eflags; /* eflags passed to ExecutorStart */
|
|
639
669
|
int es_instrument; /* OR of InstrumentOption flags */
|
|
@@ -677,6 +707,13 @@ typedef struct EState
|
|
|
677
707
|
int es_jit_flags;
|
|
678
708
|
struct JitContext *es_jit;
|
|
679
709
|
struct JitInstrumentation *es_jit_worker_instr;
|
|
710
|
+
|
|
711
|
+
/*
|
|
712
|
+
* Lists of ResultRelInfos for foreign tables on which batch-inserts are
|
|
713
|
+
* to be executed and owning ModifyTableStates, stored in the same order.
|
|
714
|
+
*/
|
|
715
|
+
List *es_insert_pending_result_relations;
|
|
716
|
+
List *es_insert_pending_modifytables;
|
|
680
717
|
} EState;
|
|
681
718
|
|
|
682
719
|
|
|
@@ -684,8 +721,8 @@ typedef struct EState
|
|
|
684
721
|
* ExecRowMark -
|
|
685
722
|
* runtime representation of FOR [KEY] UPDATE/SHARE clauses
|
|
686
723
|
*
|
|
687
|
-
* When doing UPDATE
|
|
688
|
-
* ExecRowMark for each non-target relation in the query (except inheritance
|
|
724
|
+
* When doing UPDATE/DELETE/MERGE/SELECT FOR [KEY] UPDATE/SHARE, we will have
|
|
725
|
+
* an ExecRowMark for each non-target relation in the query (except inheritance
|
|
689
726
|
* parent RTEs, which can be ignored at runtime). Virtual relations such as
|
|
690
727
|
* subqueries-in-FROM will have an ExecRowMark with relation == NULL. See
|
|
691
728
|
* PlanRowMark for details about most of the fields. In addition to fields
|
|
@@ -993,6 +1030,8 @@ typedef TupleTableSlot *(*ExecProcNodeMtd) (struct PlanState *pstate);
|
|
|
993
1030
|
*/
|
|
994
1031
|
typedef struct PlanState
|
|
995
1032
|
{
|
|
1033
|
+
pg_node_attr(abstract)
|
|
1034
|
+
|
|
996
1035
|
NodeTag type;
|
|
997
1036
|
|
|
998
1037
|
Plan *plan; /* associated Plan node */
|
|
@@ -1130,15 +1169,16 @@ typedef struct PlanState
|
|
|
1130
1169
|
*/
|
|
1131
1170
|
typedef struct EPQState
|
|
1132
1171
|
{
|
|
1133
|
-
/*
|
|
1134
|
-
|
|
1172
|
+
/* These are initialized by EvalPlanQualInit() and do not change later: */
|
|
1135
1173
|
EState *parentestate; /* main query's EState */
|
|
1136
1174
|
int epqParam; /* ID of Param to force scan node re-eval */
|
|
1175
|
+
List *resultRelations; /* integer list of RT indexes, or NIL */
|
|
1137
1176
|
|
|
1138
1177
|
/*
|
|
1139
|
-
*
|
|
1140
|
-
*
|
|
1141
|
-
*
|
|
1178
|
+
* relsubs_slot[scanrelid - 1] holds the EPQ test tuple to be returned by
|
|
1179
|
+
* the scan node for the scanrelid'th RT index, in place of performing an
|
|
1180
|
+
* actual table scan. Callers should use EvalPlanQualSlot() to fetch
|
|
1181
|
+
* these slots.
|
|
1142
1182
|
*/
|
|
1143
1183
|
List *tuple_table; /* tuple table for relsubs_slot */
|
|
1144
1184
|
TupleTableSlot **relsubs_slot;
|
|
@@ -1172,11 +1212,21 @@ typedef struct EPQState
|
|
|
1172
1212
|
ExecAuxRowMark **relsubs_rowmark;
|
|
1173
1213
|
|
|
1174
1214
|
/*
|
|
1175
|
-
*
|
|
1176
|
-
*
|
|
1215
|
+
* relsubs_done[scanrelid - 1] is true if there is no EPQ tuple for this
|
|
1216
|
+
* target relation or it has already been fetched in the current scan of
|
|
1217
|
+
* this target relation within the current EvalPlanQual test.
|
|
1177
1218
|
*/
|
|
1178
1219
|
bool *relsubs_done;
|
|
1179
1220
|
|
|
1221
|
+
/*
|
|
1222
|
+
* relsubs_blocked[scanrelid - 1] is true if there is no EPQ tuple for
|
|
1223
|
+
* this target relation during the current EvalPlanQual test. We keep
|
|
1224
|
+
* these flags set for all relids listed in resultRelations, but
|
|
1225
|
+
* transiently clear the one for the relation whose tuple is actually
|
|
1226
|
+
* passed to EvalPlanQual().
|
|
1227
|
+
*/
|
|
1228
|
+
bool *relsubs_blocked;
|
|
1229
|
+
|
|
1180
1230
|
PlanState *recheckplanstate; /* EPQ specific exec nodes, for ->plan */
|
|
1181
1231
|
} EPQState;
|
|
1182
1232
|
|
|
@@ -1317,6 +1367,7 @@ struct AppendState
|
|
|
1317
1367
|
ParallelAppendState *as_pstate; /* parallel coordination info */
|
|
1318
1368
|
Size pstate_len; /* size of parallel coordination info */
|
|
1319
1369
|
struct PartitionPruneState *as_prune_state;
|
|
1370
|
+
bool as_valid_subplans_identified; /* is as_valid_subplans valid? */
|
|
1320
1371
|
Bitmapset *as_valid_subplans;
|
|
1321
1372
|
Bitmapset *as_valid_asyncplans; /* valid asynchronous plans indexes */
|
|
1322
1373
|
bool (*choose_next_subplan) (AppendState *);
|
|
@@ -1932,6 +1983,7 @@ typedef struct CustomScanState
|
|
|
1932
1983
|
List *custom_ps; /* list of child PlanState nodes, if any */
|
|
1933
1984
|
Size pscan_len; /* size of parallel coordination information */
|
|
1934
1985
|
const struct CustomExecMethods *methods;
|
|
1986
|
+
const struct TupleTableSlotOps *slotOps;
|
|
1935
1987
|
} CustomScanState;
|
|
1936
1988
|
|
|
1937
1989
|
/* ----------------------------------------------------------------
|
|
@@ -2034,7 +2086,8 @@ typedef struct MergeJoinState
|
|
|
2034
2086
|
* OuterTupleSlot is empty!)
|
|
2035
2087
|
* hj_OuterTupleSlot tuple slot for outer tuples
|
|
2036
2088
|
* hj_HashTupleSlot tuple slot for inner (hashed) tuples
|
|
2037
|
-
* hj_NullOuterTupleSlot prepared null tuple for right/full
|
|
2089
|
+
* hj_NullOuterTupleSlot prepared null tuple for right/right-anti/full
|
|
2090
|
+
* outer joins
|
|
2038
2091
|
* hj_NullInnerTupleSlot prepared null tuple for left/full outer joins
|
|
2039
2092
|
* hj_FirstOuterTupleSlot first tuple retrieved from outer plan
|
|
2040
2093
|
* hj_JoinState current state of ExecHashJoin state machine
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Definitions for extensible nodes and custom scans
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/nodes/extensible.h
|
|
@@ -31,6 +31,8 @@
|
|
|
31
31
|
*/
|
|
32
32
|
typedef struct ExtensibleNode
|
|
33
33
|
{
|
|
34
|
+
pg_node_attr(custom_copy_equal, custom_read_write)
|
|
35
|
+
|
|
34
36
|
NodeTag type;
|
|
35
37
|
const char *extnodename; /* identifier of ExtensibleNodeMethods */
|
|
36
38
|
} ExtensibleNode;
|
|
@@ -70,8 +72,8 @@ typedef struct ExtensibleNodeMethods
|
|
|
70
72
|
void (*nodeRead) (struct ExtensibleNode *node);
|
|
71
73
|
} ExtensibleNodeMethods;
|
|
72
74
|
|
|
73
|
-
extern void RegisterExtensibleNodeMethods(const ExtensibleNodeMethods *
|
|
74
|
-
extern const ExtensibleNodeMethods *GetExtensibleNodeMethods(const char *
|
|
75
|
+
extern void RegisterExtensibleNodeMethods(const ExtensibleNodeMethods *methods);
|
|
76
|
+
extern const ExtensibleNodeMethods *GetExtensibleNodeMethods(const char *extnodename,
|
|
75
77
|
bool missing_ok);
|
|
76
78
|
|
|
77
79
|
/*
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* prototypes for the creator functions of various nodes
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/nodes/makefuncs.h
|
|
@@ -96,7 +96,9 @@ extern List *make_ands_implicit(Expr *clause);
|
|
|
96
96
|
|
|
97
97
|
extern IndexInfo *makeIndexInfo(int numattrs, int numkeyattrs, Oid amoid,
|
|
98
98
|
List *expressions, List *predicates,
|
|
99
|
-
bool unique, bool nulls_not_distinct,
|
|
99
|
+
bool unique, bool nulls_not_distinct,
|
|
100
|
+
bool isready, bool concurrent,
|
|
101
|
+
bool summarizing);
|
|
100
102
|
|
|
101
103
|
extern DefElem *makeDefElem(char *name, Node *arg, int location);
|
|
102
104
|
extern DefElem *makeDefElemExtended(char *nameSpace, char *name, Node *arg,
|
|
@@ -106,4 +108,14 @@ extern GroupingSet *makeGroupingSet(GroupingSetKind kind, List *content, int loc
|
|
|
106
108
|
|
|
107
109
|
extern VacuumRelation *makeVacuumRelation(RangeVar *relation, Oid oid, List *va_cols);
|
|
108
110
|
|
|
111
|
+
extern JsonFormat *makeJsonFormat(JsonFormatType type, JsonEncoding encoding,
|
|
112
|
+
int location);
|
|
113
|
+
extern JsonValueExpr *makeJsonValueExpr(Expr *raw_expr, Expr *formatted_expr,
|
|
114
|
+
JsonFormat *format);
|
|
115
|
+
extern Node *makeJsonKeyValue(Node *key, Node *value);
|
|
116
|
+
extern Node *makeJsonIsPredicate(Node *expr, JsonFormat *format,
|
|
117
|
+
JsonValueType item_type, bool unique_keys,
|
|
118
|
+
int location);
|
|
119
|
+
extern JsonEncoding makeJsonEncoding(char *name);
|
|
120
|
+
|
|
109
121
|
#endif /* MAKEFUNC_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES memory context node definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/nodes/memnodes.h
|
|
@@ -59,11 +59,12 @@ typedef struct MemoryContextMethods
|
|
|
59
59
|
{
|
|
60
60
|
void *(*alloc) (MemoryContext context, Size size);
|
|
61
61
|
/* call this free_p in case someone #define's free() */
|
|
62
|
-
void (*free_p) (
|
|
63
|
-
void *(*realloc) (
|
|
62
|
+
void (*free_p) (void *pointer);
|
|
63
|
+
void *(*realloc) (void *pointer, Size size);
|
|
64
64
|
void (*reset) (MemoryContext context);
|
|
65
65
|
void (*delete_context) (MemoryContext context);
|
|
66
|
-
|
|
66
|
+
MemoryContext (*get_chunk_context) (void *pointer);
|
|
67
|
+
Size (*get_chunk_space) (void *pointer);
|
|
67
68
|
bool (*is_empty) (MemoryContext context);
|
|
68
69
|
void (*stats) (MemoryContext context,
|
|
69
70
|
MemoryStatsPrintFunc printfunc, void *passthru,
|
|
@@ -77,6 +78,8 @@ typedef struct MemoryContextMethods
|
|
|
77
78
|
|
|
78
79
|
typedef struct MemoryContextData
|
|
79
80
|
{
|
|
81
|
+
pg_node_attr(abstract) /* there are no nodes of this type */
|
|
82
|
+
|
|
80
83
|
NodeTag type; /* identifies exact kind of context */
|
|
81
84
|
/* these two fields are placed here to minimize alignment wastage: */
|
|
82
85
|
bool isReset; /* T = no space alloced since last reset */
|