pg_query 2.0.3 → 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 +165 -0
- data/README.md +67 -29
- data/Rakefile +8 -23
- data/ext/pg_query/extconf.rb +21 -3
- data/ext/pg_query/include/pg_query.h +29 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +551 -272
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +563 -470
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5403 -3945
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +402 -330
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1319 -1059
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +141 -118
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1685 -1379
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +47 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/clog.h +4 -2
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +6 -9
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -11
- data/ext/pg_query/include/{access → postgres/access}/genam.h +21 -16
- data/ext/pg_query/include/{access → postgres/access}/gin.h +17 -4
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +80 -88
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -52
- 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 +17 -2
- data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +24 -24
- 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 +4 -2
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +2 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +337 -62
- data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
- data/ext/pg_query/include/{access → postgres/access}/transam.h +123 -13
- 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 +60 -100
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +5 -1
- data/ext/pg_query/include/{access → postgres/access}/xact.h +99 -32
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +69 -165
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +147 -73
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +13 -40
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +154 -37
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +34 -13
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +245 -188
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +14 -19
- data/ext/pg_query/include/postgres/catalog/genbki.h +143 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +20 -5
- data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +5 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +73 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +12 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +14 -10
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +45 -26
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +19 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +45 -15
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +31 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +35 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +21 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +39 -13
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +13 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +4 -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 +11 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +17 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +20 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +10 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +21 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +37 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +8 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +20 -11
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +49 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +19 -12
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +24 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +56 -24
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +70 -31
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +9 -7
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +4 -5
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +12 -24
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +2 -2
- 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 +6 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +36 -25
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +10 -4
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +140 -47
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +4 -4
- 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 +2 -6
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/postgres/common/pg_prng.h +61 -0
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +21 -14
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/postgres/common/string.h +44 -0
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +125 -0
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +138 -8
- 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 +50 -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 +98 -32
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +17 -3
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +33 -16
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +42 -4
- 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} +33 -8
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +22 -10
- 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 +12 -12
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/postgres/lib/dshash.h +115 -0
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +454 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +158 -33
- data/ext/pg_query/include/postgres/lib/sort_template.h +432 -0
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +12 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +5 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +54 -8
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +45 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +31 -20
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +26 -71
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +25 -13
- 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 +125 -25
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +96 -65
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +351 -103
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +8 -4
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +19 -6
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +11 -6
- 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 +100 -496
- 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 +678 -207
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1282 -454
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +103 -73
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +474 -133
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +754 -254
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
- 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/postgres/nodes/value.h +90 -0
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +14 -5
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +9 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +31 -28
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +29 -12
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +15 -17
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +20 -5
- data/ext/pg_query/include/postgres/parser/kwlist.h +498 -0
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +5 -8
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +6 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +2 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +2 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +41 -11
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +11 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/postgres/parser/parser.h +68 -0
- 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 +2 -5
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +216 -228
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +80 -58
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +6 -6
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +778 -0
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +16 -6
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +116 -116
- 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} +10 -10
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +3 -3
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +60 -60
- data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +9 -1
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +79 -86
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +9 -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 +3 -3
- 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 +129 -16
- 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} +107 -111
- 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 +17 -20
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +3 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +6 -6
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/pgarch.h +7 -10
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +21 -17
- data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +16 -11
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +5 -3
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +27 -22
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +8 -5
- data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +8 -8
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +753 -0
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +42 -12
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +6 -12
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +158 -20
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +20 -20
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -6
- 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 +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -37
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +196 -95
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +152 -101
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +14 -3
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +6 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +6 -2
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +48 -14
- data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +5 -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 +96 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +17 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +7 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +37 -25
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +4 -4
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +21 -33
- data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -1
- 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 +9 -7
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +15 -4
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +200 -67
- data/ext/pg_query/include/postgres/storage/procarray.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +5 -7
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +118 -298
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +3 -11
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +5 -4
- 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 +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +21 -17
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +17 -9
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +9 -5
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +3 -2
- 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 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +7 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +19 -14
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +7 -3
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +3 -5
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +37 -71
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +26 -2
- data/ext/pg_query/include/postgres/utils/backend_progress.h +45 -0
- data/ext/pg_query/include/postgres/utils/backend_status.h +342 -0
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +20 -11
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +3 -2
- 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 +48 -27
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +154 -48
- data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +2 -0
- 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 +13 -12
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +1353 -696
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +243 -18
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +120 -121
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +71 -21
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +15 -11
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +7 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +16 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +14 -53
- 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 +38 -9
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +33 -4
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +37 -21
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +814 -0
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +12 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +59 -59
- 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/postgres/utils/regproc.h +39 -0
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +129 -61
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +21 -14
- 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 +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +38 -15
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +14 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +117 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +11 -4
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +46 -15
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +209 -41
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +24 -17
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +17 -3
- data/ext/pg_query/include/postgres/utils/wait_event.h +294 -0
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +18 -8
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +65 -471
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7494 -6382
- data/ext/pg_query/include/protobuf/pg_query.pb.h +116922 -84792
- data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
- data/ext/pg_query/include/protobuf-c.h +7 -3
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +21026 -17002
- data/ext/pg_query/pg_query_deparse.c +1 -9896
- data/ext/pg_query/pg_query_fingerprint.c +162 -50
- data/ext/pg_query/pg_query_fingerprint.h +3 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +56 -12
- data/ext/pg_query/pg_query_normalize.c +259 -64
- data/ext/pg_query/pg_query_outfuncs.h +1 -0
- data/ext/pg_query/pg_query_outfuncs_json.c +71 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +86 -21
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +43 -8
- data/ext/pg_query/pg_query_ruby.c +6 -1
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +3 -2
- data/ext/pg_query/pg_query_split.c +6 -5
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/protobuf-c.c +34 -27
- data/ext/pg_query/src_backend_catalog_namespace.c +27 -10
- data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
- data/ext/pg_query/src_backend_commands_define.c +11 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +13 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +103 -5894
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3830
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +99 -12
- data/ext/pg_query/src_backend_nodes_makefuncs.c +99 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +325 -131
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +36104 -32074
- data/ext/pg_query/src_backend_parser_parser.c +53 -8
- data/ext/pg_query/src_backend_parser_scan.c +4893 -3701
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +133 -105
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +17 -7
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
- data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +187 -19
- data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
- data/ext/pg_query/src_backend_utils_error_elog.c +513 -318
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +44 -17
- data/ext/pg_query/src_backend_utils_init_globals.c +9 -6
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +74 -131
- 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 +453 -314
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +549 -76
- 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 +420 -0
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +545 -498
- 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 +717 -113
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1136 -1195
- 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 +10 -10
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
- data/ext/pg_query/src_port_pg_bitutils.c +103 -40
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +51 -29
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/deparse.rb +7 -1
- data/lib/pg_query/filter_columns.rb +7 -5
- data/lib/pg_query/fingerprint.rb +21 -9
- data/lib/pg_query/node.rb +18 -13
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +141 -50
- data/lib/pg_query/pg_query_pb.rb +175 -3031
- data/lib/pg_query/treewalker.rb +26 -2
- data/lib/pg_query/truncate.rb +54 -8
- data/lib/pg_query/version.rb +1 -1
- data/lib/pg_query.rb +0 -1
- metadata +443 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/rmgr.h +0 -35
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/catalog/genbki.h +0 -64
- data/ext/pg_query/include/catalog/indexing.h +0 -366
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -37
- data/ext/pg_query/include/common/string.h +0 -19
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1072
- data/ext/pg_query/include/nodes/value.h +0 -61
- data/ext/pg_query/include/parser/gram.h +0 -1067
- data/ext/pg_query/include/parser/kwlist.h +0 -477
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/include/parser/parser.h +0 -41
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/pgstat.h +0 -1487
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/replication/logicalproto.h +0 -110
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/replication/reorderbuffer.h +0 -467
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -19
- 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/regproc.h +0 -28
- 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_libpq_pqcomm.c +0 -651
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1831
- data/ext/pg_query/src_common_string.c +0 -86
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_random.c +0 -31
- data/ext/pg_query/src_port_strnlen.c +0 -39
- data/lib/pg_query/json_field_names.rb +0 -1402
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* plpgsql.h - Definitions for the PL/pgSQL
|
|
4
4
|
* procedural language
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
*
|
|
@@ -64,7 +64,6 @@ typedef enum PLpgSQL_datum_type
|
|
|
64
64
|
PLPGSQL_DTYPE_ROW,
|
|
65
65
|
PLPGSQL_DTYPE_REC,
|
|
66
66
|
PLPGSQL_DTYPE_RECFIELD,
|
|
67
|
-
PLPGSQL_DTYPE_ARRAYELEM,
|
|
68
67
|
PLPGSQL_DTYPE_PROMISE
|
|
69
68
|
} PLpgSQL_datum_type;
|
|
70
69
|
|
|
@@ -128,8 +127,7 @@ typedef enum PLpgSQL_stmt_type
|
|
|
128
127
|
PLPGSQL_STMT_PERFORM,
|
|
129
128
|
PLPGSQL_STMT_CALL,
|
|
130
129
|
PLPGSQL_STMT_COMMIT,
|
|
131
|
-
PLPGSQL_STMT_ROLLBACK
|
|
132
|
-
PLPGSQL_STMT_SET
|
|
130
|
+
PLPGSQL_STMT_ROLLBACK
|
|
133
131
|
} PLpgSQL_stmt_type;
|
|
134
132
|
|
|
135
133
|
/*
|
|
@@ -149,6 +147,7 @@ enum
|
|
|
149
147
|
typedef enum PLpgSQL_getdiag_kind
|
|
150
148
|
{
|
|
151
149
|
PLPGSQL_GETDIAG_ROW_COUNT,
|
|
150
|
+
PLPGSQL_GETDIAG_ROUTINE_OID,
|
|
152
151
|
PLPGSQL_GETDIAG_CONTEXT,
|
|
153
152
|
PLPGSQL_GETDIAG_ERROR_CONTEXT,
|
|
154
153
|
PLPGSQL_GETDIAG_ERROR_DETAIL,
|
|
@@ -218,10 +217,10 @@ typedef struct PLpgSQL_type
|
|
|
218
217
|
*/
|
|
219
218
|
typedef struct PLpgSQL_expr
|
|
220
219
|
{
|
|
221
|
-
char *query;
|
|
222
|
-
|
|
220
|
+
char *query; /* query string, verbatim from function body */
|
|
221
|
+
RawParseMode parseMode; /* raw_parser() mode to use */
|
|
222
|
+
SPIPlanPtr plan; /* plan, or NULL if not made yet */
|
|
223
223
|
Bitmapset *paramnos; /* all dnos referenced by this query */
|
|
224
|
-
int rwparam; /* dno of read/write param, or -1 if none */
|
|
225
224
|
|
|
226
225
|
/* function containing this expr (not set until we first parse query) */
|
|
227
226
|
struct PLpgSQL_function *func;
|
|
@@ -235,6 +234,17 @@ typedef struct PLpgSQL_expr
|
|
|
235
234
|
int32 expr_simple_typmod; /* result typmod, if simple */
|
|
236
235
|
bool expr_simple_mutable; /* true if simple expr is mutable */
|
|
237
236
|
|
|
237
|
+
/*
|
|
238
|
+
* These fields are used to optimize assignments to expanded-datum
|
|
239
|
+
* variables. If this expression is the source of an assignment to a
|
|
240
|
+
* simple variable, target_param holds that variable's dno; else it's -1.
|
|
241
|
+
* If we match a Param within expr_simple_expr to such a variable, that
|
|
242
|
+
* Param's address is stored in expr_rw_param; then expression code
|
|
243
|
+
* generation will allow the value for that Param to be passed read/write.
|
|
244
|
+
*/
|
|
245
|
+
int target_param; /* dno of assign target, or -1 if none */
|
|
246
|
+
Param *expr_rw_param; /* read/write Param within expr, if any */
|
|
247
|
+
|
|
238
248
|
/*
|
|
239
249
|
* If the expression was ever determined to be simple, we remember its
|
|
240
250
|
* CachedPlanSource and CachedPlan here. If expr_simple_plan_lxid matches
|
|
@@ -260,7 +270,7 @@ typedef struct PLpgSQL_expr
|
|
|
260
270
|
* Generic datum array item
|
|
261
271
|
*
|
|
262
272
|
* PLpgSQL_datum is the common supertype for PLpgSQL_var, PLpgSQL_row,
|
|
263
|
-
* PLpgSQL_rec,
|
|
273
|
+
* PLpgSQL_rec, and PLpgSQL_recfield.
|
|
264
274
|
*/
|
|
265
275
|
typedef struct PLpgSQL_datum
|
|
266
276
|
{
|
|
@@ -421,30 +431,6 @@ typedef struct PLpgSQL_recfield
|
|
|
421
431
|
/* if rectupledescid == INVALID_TUPLEDESC_IDENTIFIER, finfo isn't valid */
|
|
422
432
|
} PLpgSQL_recfield;
|
|
423
433
|
|
|
424
|
-
/*
|
|
425
|
-
* Element of array variable
|
|
426
|
-
*/
|
|
427
|
-
typedef struct PLpgSQL_arrayelem
|
|
428
|
-
{
|
|
429
|
-
PLpgSQL_datum_type dtype;
|
|
430
|
-
int dno;
|
|
431
|
-
/* end of PLpgSQL_datum fields */
|
|
432
|
-
|
|
433
|
-
PLpgSQL_expr *subscript;
|
|
434
|
-
int arrayparentno; /* dno of parent array variable */
|
|
435
|
-
|
|
436
|
-
/* Remaining fields are cached info about the array variable's type */
|
|
437
|
-
Oid parenttypoid; /* type of array variable; 0 if not yet set */
|
|
438
|
-
int32 parenttypmod; /* typmod of array variable */
|
|
439
|
-
Oid arraytypoid; /* OID of actual array type */
|
|
440
|
-
int32 arraytypmod; /* typmod of array (and its elements too) */
|
|
441
|
-
int16 arraytyplen; /* typlen of array type */
|
|
442
|
-
Oid elemtypoid; /* OID of array element type */
|
|
443
|
-
int16 elemtyplen; /* typlen of element type */
|
|
444
|
-
bool elemtypbyval; /* element type is pass-by-value? */
|
|
445
|
-
char elemtypalign; /* typalign of element type */
|
|
446
|
-
} PLpgSQL_arrayelem;
|
|
447
|
-
|
|
448
434
|
/*
|
|
449
435
|
* Item in the compilers namespace tree
|
|
450
436
|
*/
|
|
@@ -580,17 +566,6 @@ typedef struct PLpgSQL_stmt_rollback
|
|
|
580
566
|
bool chain;
|
|
581
567
|
} PLpgSQL_stmt_rollback;
|
|
582
568
|
|
|
583
|
-
/*
|
|
584
|
-
* SET statement
|
|
585
|
-
*/
|
|
586
|
-
typedef struct PLpgSQL_stmt_set
|
|
587
|
-
{
|
|
588
|
-
PLpgSQL_stmt_type cmd_type;
|
|
589
|
-
int lineno;
|
|
590
|
-
unsigned int stmtid;
|
|
591
|
-
PLpgSQL_expr *expr;
|
|
592
|
-
} PLpgSQL_stmt_set;
|
|
593
|
-
|
|
594
569
|
/*
|
|
595
570
|
* GET DIAGNOSTICS item
|
|
596
571
|
*/
|
|
@@ -919,8 +894,8 @@ typedef struct PLpgSQL_stmt_execsql
|
|
|
919
894
|
int lineno;
|
|
920
895
|
unsigned int stmtid;
|
|
921
896
|
PLpgSQL_expr *sqlstmt;
|
|
922
|
-
bool mod_stmt; /* is the stmt INSERT/UPDATE/DELETE?
|
|
923
|
-
|
|
897
|
+
bool mod_stmt; /* is the stmt INSERT/UPDATE/DELETE/MERGE? */
|
|
898
|
+
bool mod_stmt_set; /* is mod_stmt valid yet? */
|
|
924
899
|
bool into; /* INTO supplied? */
|
|
925
900
|
bool strict; /* INTO STRICT flag */
|
|
926
901
|
PLpgSQL_variable *target; /* INTO target (record or row) */
|
|
@@ -1023,9 +998,6 @@ typedef struct PLpgSQL_function
|
|
|
1023
998
|
int extra_warnings;
|
|
1024
999
|
int extra_errors;
|
|
1025
1000
|
|
|
1026
|
-
/* count of statements inside function */
|
|
1027
|
-
unsigned int nstatements;
|
|
1028
|
-
|
|
1029
1001
|
/* the datums representing the function's local variables */
|
|
1030
1002
|
int ndatums;
|
|
1031
1003
|
PLpgSQL_datum **datums;
|
|
@@ -1034,6 +1006,10 @@ typedef struct PLpgSQL_function
|
|
|
1034
1006
|
/* function body parsetree */
|
|
1035
1007
|
PLpgSQL_stmt_block *action;
|
|
1036
1008
|
|
|
1009
|
+
/* data derived while parsing body */
|
|
1010
|
+
unsigned int nstatements; /* counter for assigning stmtids */
|
|
1011
|
+
bool requires_procedure_resowner; /* contains CALL or DO? */
|
|
1012
|
+
|
|
1037
1013
|
/* these fields change when the function is used */
|
|
1038
1014
|
struct PLpgSQL_execstate *cur_estate;
|
|
1039
1015
|
unsigned long use_count;
|
|
@@ -1095,9 +1071,11 @@ typedef struct PLpgSQL_execstate
|
|
|
1095
1071
|
EState *simple_eval_estate;
|
|
1096
1072
|
ResourceOwner simple_eval_resowner;
|
|
1097
1073
|
|
|
1074
|
+
/* if running nonatomic procedure or DO block, resowner to use for CALL */
|
|
1075
|
+
ResourceOwner procedure_resowner;
|
|
1076
|
+
|
|
1098
1077
|
/* lookup table to use for executing type casts */
|
|
1099
1078
|
HTAB *cast_hash;
|
|
1100
|
-
MemoryContext cast_hash_context;
|
|
1101
1079
|
|
|
1102
1080
|
/* memory context for statement-lifespan temporary values */
|
|
1103
1081
|
MemoryContext stmt_mcontext; /* current stmt context, or NULL if none */
|
|
@@ -1110,6 +1088,7 @@ typedef struct PLpgSQL_execstate
|
|
|
1110
1088
|
|
|
1111
1089
|
/* status information for error context reporting */
|
|
1112
1090
|
PLpgSQL_stmt *err_stmt; /* current stmt */
|
|
1091
|
+
PLpgSQL_variable *err_var; /* current variable, if in a DECLARE section */
|
|
1113
1092
|
const char *err_text; /* additional state info */
|
|
1114
1093
|
|
|
1115
1094
|
void *plugin_info; /* reserved for use by optional plugin */
|
|
@@ -1121,8 +1100,6 @@ typedef struct PLpgSQL_execstate
|
|
|
1121
1100
|
* variable "PLpgSQL_plugin" and set it to point to a PLpgSQL_plugin struct.
|
|
1122
1101
|
* Typically the struct could just be static data in the plugin library.
|
|
1123
1102
|
* We expect that a plugin would do this at library load time (_PG_init()).
|
|
1124
|
-
* It must also be careful to set the rendezvous variable back to NULL
|
|
1125
|
-
* if it is unloaded (_PG_fini()).
|
|
1126
1103
|
*
|
|
1127
1104
|
* This structure is basically a collection of function pointers --- at
|
|
1128
1105
|
* various interesting points in pl_exec.c, we call these functions
|
|
@@ -1141,9 +1118,17 @@ typedef struct PLpgSQL_execstate
|
|
|
1141
1118
|
* statement.
|
|
1142
1119
|
*
|
|
1143
1120
|
* Also, immediately before any call to func_setup, PL/pgSQL fills in the
|
|
1144
|
-
*
|
|
1145
|
-
*
|
|
1146
|
-
*
|
|
1121
|
+
* remaining fields with pointers to some of its own functions, allowing the
|
|
1122
|
+
* plugin to invoke those functions conveniently. The exposed functions are:
|
|
1123
|
+
* plpgsql_exec_error_callback
|
|
1124
|
+
* exec_assign_expr
|
|
1125
|
+
* exec_assign_value
|
|
1126
|
+
* exec_eval_datum
|
|
1127
|
+
* exec_cast_value
|
|
1128
|
+
* (plpgsql_exec_error_callback is not actually meant to be called by the
|
|
1129
|
+
* plugin, but rather to allow it to identify PL/pgSQL error context stack
|
|
1130
|
+
* frames. The others are useful for debugger-like plugins to examine and
|
|
1131
|
+
* set variables.)
|
|
1147
1132
|
*/
|
|
1148
1133
|
typedef struct PLpgSQL_plugin
|
|
1149
1134
|
{
|
|
@@ -1156,8 +1141,20 @@ typedef struct PLpgSQL_plugin
|
|
|
1156
1141
|
|
|
1157
1142
|
/* Function pointers set by PL/pgSQL itself */
|
|
1158
1143
|
void (*error_callback) (void *arg);
|
|
1159
|
-
void (*assign_expr) (PLpgSQL_execstate *estate,
|
|
1144
|
+
void (*assign_expr) (PLpgSQL_execstate *estate,
|
|
1145
|
+
PLpgSQL_datum *target,
|
|
1160
1146
|
PLpgSQL_expr *expr);
|
|
1147
|
+
void (*assign_value) (PLpgSQL_execstate *estate,
|
|
1148
|
+
PLpgSQL_datum *target,
|
|
1149
|
+
Datum value, bool isNull,
|
|
1150
|
+
Oid valtype, int32 valtypmod);
|
|
1151
|
+
void (*eval_datum) (PLpgSQL_execstate *estate, PLpgSQL_datum *datum,
|
|
1152
|
+
Oid *typeId, int32 *typetypmod,
|
|
1153
|
+
Datum *value, bool *isnull);
|
|
1154
|
+
Datum (*cast_value) (PLpgSQL_execstate *estate,
|
|
1155
|
+
Datum value, bool *isnull,
|
|
1156
|
+
Oid valtype, int32 valtypmod,
|
|
1157
|
+
Oid reqtype, int32 reqtypmod);
|
|
1161
1158
|
} PLpgSQL_plugin;
|
|
1162
1159
|
|
|
1163
1160
|
/*
|
|
@@ -1194,11 +1191,11 @@ typedef enum
|
|
|
1194
1191
|
IDENTIFIER_LOOKUP_EXPR /* In SQL expression --- special case */
|
|
1195
1192
|
} IdentifierLookup;
|
|
1196
1193
|
|
|
1197
|
-
extern __thread
|
|
1194
|
+
extern __thread IdentifierLookup plpgsql_IdentifierLookup;
|
|
1198
1195
|
|
|
1199
|
-
extern __thread
|
|
1196
|
+
extern __thread int plpgsql_variable_conflict;
|
|
1200
1197
|
|
|
1201
|
-
extern __thread
|
|
1198
|
+
extern __thread bool plpgsql_print_strict_params;
|
|
1202
1199
|
|
|
1203
1200
|
extern bool plpgsql_check_asserts;
|
|
1204
1201
|
|
|
@@ -1212,18 +1209,18 @@ extern bool plpgsql_check_asserts;
|
|
|
1212
1209
|
extern int plpgsql_extra_warnings;
|
|
1213
1210
|
extern int plpgsql_extra_errors;
|
|
1214
1211
|
|
|
1215
|
-
extern __thread
|
|
1216
|
-
extern __thread
|
|
1212
|
+
extern __thread bool plpgsql_check_syntax;
|
|
1213
|
+
extern __thread bool plpgsql_DumpExecTree;
|
|
1217
1214
|
|
|
1218
|
-
extern __thread
|
|
1215
|
+
extern __thread PLpgSQL_stmt_block *plpgsql_parse_result;
|
|
1219
1216
|
|
|
1220
|
-
extern __thread
|
|
1221
|
-
extern __thread
|
|
1217
|
+
extern __thread int plpgsql_nDatums;
|
|
1218
|
+
extern __thread PLpgSQL_datum **plpgsql_Datums;
|
|
1222
1219
|
|
|
1223
|
-
extern __thread
|
|
1220
|
+
extern __thread char *plpgsql_error_funcname;
|
|
1224
1221
|
|
|
1225
|
-
extern __thread
|
|
1226
|
-
extern __thread
|
|
1222
|
+
extern __thread PLpgSQL_function *plpgsql_curr_compile;
|
|
1223
|
+
extern __thread MemoryContext plpgsql_compile_tmp_cxt;
|
|
1227
1224
|
|
|
1228
1225
|
extern PLpgSQL_plugin **plpgsql_plugin_ptr;
|
|
1229
1226
|
|
|
@@ -1234,11 +1231,11 @@ extern PLpgSQL_plugin **plpgsql_plugin_ptr;
|
|
|
1234
1231
|
/*
|
|
1235
1232
|
* Functions in pl_comp.c
|
|
1236
1233
|
*/
|
|
1237
|
-
extern PLpgSQL_function *plpgsql_compile(FunctionCallInfo fcinfo,
|
|
1238
|
-
|
|
1234
|
+
extern PGDLLEXPORT PLpgSQL_function *plpgsql_compile(FunctionCallInfo fcinfo,
|
|
1235
|
+
bool forValidator);
|
|
1239
1236
|
extern PLpgSQL_function *plpgsql_compile_inline(char *proc_source);
|
|
1240
|
-
extern void plpgsql_parser_setup(struct ParseState *pstate,
|
|
1241
|
-
|
|
1237
|
+
extern PGDLLEXPORT void plpgsql_parser_setup(struct ParseState *pstate,
|
|
1238
|
+
PLpgSQL_expr *expr);
|
|
1242
1239
|
extern bool plpgsql_parse_word(char *word1, const char *yytxt, bool lookup,
|
|
1243
1240
|
PLwdatum *wdatum, PLword *word);
|
|
1244
1241
|
extern bool plpgsql_parse_dblword(char *word1, char *word2,
|
|
@@ -1249,9 +1246,9 @@ extern PLpgSQL_type *plpgsql_parse_wordtype(char *ident);
|
|
|
1249
1246
|
extern PLpgSQL_type *plpgsql_parse_cwordtype(List *idents);
|
|
1250
1247
|
extern PLpgSQL_type *plpgsql_parse_wordrowtype(char *ident);
|
|
1251
1248
|
extern PLpgSQL_type *plpgsql_parse_cwordrowtype(List *idents);
|
|
1252
|
-
extern PLpgSQL_type *plpgsql_build_datatype(Oid typeOid, int32 typmod,
|
|
1253
|
-
|
|
1254
|
-
|
|
1249
|
+
extern PGDLLEXPORT PLpgSQL_type *plpgsql_build_datatype(Oid typeOid, int32 typmod,
|
|
1250
|
+
Oid collation,
|
|
1251
|
+
TypeName *origtypname);
|
|
1255
1252
|
extern PLpgSQL_variable *plpgsql_build_variable(const char *refname, int lineno,
|
|
1256
1253
|
PLpgSQL_type *dtype,
|
|
1257
1254
|
bool add2namespace);
|
|
@@ -1260,8 +1257,8 @@ extern PLpgSQL_rec *plpgsql_build_record(const char *refname, int lineno,
|
|
|
1260
1257
|
bool add2namespace);
|
|
1261
1258
|
extern PLpgSQL_recfield *plpgsql_build_recfield(PLpgSQL_rec *rec,
|
|
1262
1259
|
const char *fldname);
|
|
1263
|
-
extern int
|
|
1264
|
-
|
|
1260
|
+
extern PGDLLEXPORT int plpgsql_recognize_err_condition(const char *condname,
|
|
1261
|
+
bool allow_sqlstate);
|
|
1265
1262
|
extern PLpgSQL_condition *plpgsql_parse_err_condition(char *condname);
|
|
1266
1263
|
extern void plpgsql_start_datums(void);
|
|
1267
1264
|
extern void plpgsql_finish_datums(PLpgSQL_function *function);
|
|
@@ -1269,11 +1266,6 @@ extern void plpgsql_adddatum(PLpgSQL_datum *newdatum);
|
|
|
1269
1266
|
extern int plpgsql_add_initdatums(int **varnos);
|
|
1270
1267
|
extern void plpgsql_HashTableInit(void);
|
|
1271
1268
|
|
|
1272
|
-
/*
|
|
1273
|
-
* Functions in pl_handler.c
|
|
1274
|
-
*/
|
|
1275
|
-
extern void _PG_init(void);
|
|
1276
|
-
|
|
1277
1269
|
/*
|
|
1278
1270
|
* Functions in pl_exec.c
|
|
1279
1271
|
*/
|
|
@@ -1281,6 +1273,7 @@ extern Datum plpgsql_exec_function(PLpgSQL_function *func,
|
|
|
1281
1273
|
FunctionCallInfo fcinfo,
|
|
1282
1274
|
EState *simple_eval_estate,
|
|
1283
1275
|
ResourceOwner simple_eval_resowner,
|
|
1276
|
+
ResourceOwner procedure_resowner,
|
|
1284
1277
|
bool atomic);
|
|
1285
1278
|
extern HeapTuple plpgsql_exec_trigger(PLpgSQL_function *func,
|
|
1286
1279
|
TriggerData *trigdata);
|
|
@@ -1289,8 +1282,8 @@ extern void plpgsql_exec_event_trigger(PLpgSQL_function *func,
|
|
|
1289
1282
|
extern void plpgsql_xact_cb(XactEvent event, void *arg);
|
|
1290
1283
|
extern void plpgsql_subxact_cb(SubXactEvent event, SubTransactionId mySubid,
|
|
1291
1284
|
SubTransactionId parentSubid, void *arg);
|
|
1292
|
-
extern Oid
|
|
1293
|
-
|
|
1285
|
+
extern PGDLLEXPORT Oid plpgsql_exec_get_datum_type(PLpgSQL_execstate *estate,
|
|
1286
|
+
PLpgSQL_datum *datum);
|
|
1294
1287
|
extern void plpgsql_exec_get_datum_type_info(PLpgSQL_execstate *estate,
|
|
1295
1288
|
PLpgSQL_datum *datum,
|
|
1296
1289
|
Oid *typeId, int32 *typMod,
|
|
@@ -1305,9 +1298,9 @@ extern void plpgsql_ns_push(const char *label,
|
|
|
1305
1298
|
extern void plpgsql_ns_pop(void);
|
|
1306
1299
|
extern PLpgSQL_nsitem *plpgsql_ns_top(void);
|
|
1307
1300
|
extern void plpgsql_ns_additem(PLpgSQL_nsitem_type itemtype, int itemno, const char *name);
|
|
1308
|
-
extern PLpgSQL_nsitem *plpgsql_ns_lookup(PLpgSQL_nsitem *ns_cur, bool localmode,
|
|
1309
|
-
|
|
1310
|
-
|
|
1301
|
+
extern PGDLLEXPORT PLpgSQL_nsitem *plpgsql_ns_lookup(PLpgSQL_nsitem *ns_cur, bool localmode,
|
|
1302
|
+
const char *name1, const char *name2,
|
|
1303
|
+
const char *name3, int *names_used);
|
|
1311
1304
|
extern PLpgSQL_nsitem *plpgsql_ns_lookup_label(PLpgSQL_nsitem *ns_cur,
|
|
1312
1305
|
const char *name);
|
|
1313
1306
|
extern PLpgSQL_nsitem *plpgsql_ns_find_nearest_loop(PLpgSQL_nsitem *ns_cur);
|
|
@@ -1315,7 +1308,7 @@ extern PLpgSQL_nsitem *plpgsql_ns_find_nearest_loop(PLpgSQL_nsitem *ns_cur);
|
|
|
1315
1308
|
/*
|
|
1316
1309
|
* Other functions in pl_funcs.c
|
|
1317
1310
|
*/
|
|
1318
|
-
extern const char *plpgsql_stmt_typename(PLpgSQL_stmt *stmt);
|
|
1311
|
+
extern PGDLLEXPORT const char *plpgsql_stmt_typename(PLpgSQL_stmt *stmt);
|
|
1319
1312
|
extern const char *plpgsql_getdiag_kindname(PLpgSQL_getdiag_kind kind);
|
|
1320
1313
|
extern void plpgsql_free_function_memory(PLpgSQL_function *func);
|
|
1321
1314
|
extern void plpgsql_dumptree(PLpgSQL_function *func);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* arch-arm.h
|
|
4
4
|
* Atomic operations considerations specific to ARM
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 2013-
|
|
6
|
+
* Portions Copyright (c) 2013-2023, PostgreSQL Global Development Group
|
|
7
7
|
*
|
|
8
8
|
* NOTES:
|
|
9
9
|
*
|
|
@@ -21,6 +21,12 @@
|
|
|
21
21
|
* 64 bit atomics on ARM32 are implemented using kernel fallbacks and thus
|
|
22
22
|
* might be slow, so disable entirely. On ARM64 that problem doesn't exist.
|
|
23
23
|
*/
|
|
24
|
-
#if !defined(__aarch64__)
|
|
24
|
+
#if !defined(__aarch64__)
|
|
25
25
|
#define PG_DISABLE_64_BIT_ATOMICS
|
|
26
|
-
#
|
|
26
|
+
#else
|
|
27
|
+
/*
|
|
28
|
+
* Architecture Reference Manual for ARMv8 states aligned read/write to/from
|
|
29
|
+
* general purpose register is atomic.
|
|
30
|
+
*/
|
|
31
|
+
#define PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY
|
|
32
|
+
#endif /* __aarch64__ */
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* arch-hppa.h
|
|
4
|
+
* Atomic operations considerations specific to HPPA
|
|
5
|
+
*
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
|
+
*
|
|
9
|
+
* NOTES:
|
|
10
|
+
*
|
|
11
|
+
* src/include/port/atomics/arch-hppa.h
|
|
12
|
+
*
|
|
13
|
+
*-------------------------------------------------------------------------
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/* HPPA doesn't do either read or write reordering */
|
|
17
|
+
#define pg_memory_barrier_impl() pg_compiler_barrier_impl()
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* arch-ppc.h
|
|
4
4
|
* Atomic operations considerations specific to PowerPC
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* NOTES:
|
|
@@ -90,12 +90,12 @@ pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
|
|
|
90
90
|
(int32) *expected >= PG_INT16_MIN)
|
|
91
91
|
__asm__ __volatile__(
|
|
92
92
|
" sync \n"
|
|
93
|
-
" lwarx %0,0,%5
|
|
93
|
+
" lwarx %0,0,%5,1 \n"
|
|
94
94
|
" cmpwi %0,%3 \n"
|
|
95
|
-
" bne $+12 \n" /* branch to
|
|
95
|
+
" bne $+12 \n" /* branch to lwsync */
|
|
96
96
|
" stwcx. %4,0,%5 \n"
|
|
97
97
|
" bne $-16 \n" /* branch to lwarx */
|
|
98
|
-
"
|
|
98
|
+
" lwsync \n"
|
|
99
99
|
" mfcr %1 \n"
|
|
100
100
|
: "=&r"(found), "=r"(condition_register), "+m"(ptr->value)
|
|
101
101
|
: "i"(*expected), "r"(newval), "r"(&ptr->value)
|
|
@@ -104,12 +104,12 @@ pg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr,
|
|
|
104
104
|
#endif
|
|
105
105
|
__asm__ __volatile__(
|
|
106
106
|
" sync \n"
|
|
107
|
-
" lwarx %0,0,%5
|
|
107
|
+
" lwarx %0,0,%5,1 \n"
|
|
108
108
|
" cmpw %0,%3 \n"
|
|
109
|
-
" bne $+12 \n" /* branch to
|
|
109
|
+
" bne $+12 \n" /* branch to lwsync */
|
|
110
110
|
" stwcx. %4,0,%5 \n"
|
|
111
111
|
" bne $-16 \n" /* branch to lwarx */
|
|
112
|
-
"
|
|
112
|
+
" lwsync \n"
|
|
113
113
|
" mfcr %1 \n"
|
|
114
114
|
: "=&r"(found), "=r"(condition_register), "+m"(ptr->value)
|
|
115
115
|
: "r"(*expected), "r"(newval), "r"(&ptr->value)
|
|
@@ -138,11 +138,11 @@ pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_)
|
|
|
138
138
|
add_ <= PG_INT16_MAX && add_ >= PG_INT16_MIN)
|
|
139
139
|
__asm__ __volatile__(
|
|
140
140
|
" sync \n"
|
|
141
|
-
" lwarx %1,0,%4
|
|
141
|
+
" lwarx %1,0,%4,1 \n"
|
|
142
142
|
" addi %0,%1,%3 \n"
|
|
143
143
|
" stwcx. %0,0,%4 \n"
|
|
144
144
|
" bne $-12 \n" /* branch to lwarx */
|
|
145
|
-
"
|
|
145
|
+
" lwsync \n"
|
|
146
146
|
: "=&r"(_t), "=&b"(res), "+m"(ptr->value)
|
|
147
147
|
: "i"(add_), "r"(&ptr->value)
|
|
148
148
|
: "memory", "cc");
|
|
@@ -150,11 +150,11 @@ pg_atomic_fetch_add_u32_impl(volatile pg_atomic_uint32 *ptr, int32 add_)
|
|
|
150
150
|
#endif
|
|
151
151
|
__asm__ __volatile__(
|
|
152
152
|
" sync \n"
|
|
153
|
-
" lwarx %1,0,%4
|
|
153
|
+
" lwarx %1,0,%4,1 \n"
|
|
154
154
|
" add %0,%1,%3 \n"
|
|
155
155
|
" stwcx. %0,0,%4 \n"
|
|
156
156
|
" bne $-12 \n" /* branch to lwarx */
|
|
157
|
-
"
|
|
157
|
+
" lwsync \n"
|
|
158
158
|
: "=&r"(_t), "=&r"(res), "+m"(ptr->value)
|
|
159
159
|
: "r"(add_), "r"(&ptr->value)
|
|
160
160
|
: "memory", "cc");
|
|
@@ -180,12 +180,12 @@ pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr,
|
|
|
180
180
|
(int64) *expected >= PG_INT16_MIN)
|
|
181
181
|
__asm__ __volatile__(
|
|
182
182
|
" sync \n"
|
|
183
|
-
" ldarx %0,0,%5
|
|
183
|
+
" ldarx %0,0,%5,1 \n"
|
|
184
184
|
" cmpdi %0,%3 \n"
|
|
185
|
-
" bne $+12 \n" /* branch to
|
|
185
|
+
" bne $+12 \n" /* branch to lwsync */
|
|
186
186
|
" stdcx. %4,0,%5 \n"
|
|
187
187
|
" bne $-16 \n" /* branch to ldarx */
|
|
188
|
-
"
|
|
188
|
+
" lwsync \n"
|
|
189
189
|
" mfcr %1 \n"
|
|
190
190
|
: "=&r"(found), "=r"(condition_register), "+m"(ptr->value)
|
|
191
191
|
: "i"(*expected), "r"(newval), "r"(&ptr->value)
|
|
@@ -194,12 +194,12 @@ pg_atomic_compare_exchange_u64_impl(volatile pg_atomic_uint64 *ptr,
|
|
|
194
194
|
#endif
|
|
195
195
|
__asm__ __volatile__(
|
|
196
196
|
" sync \n"
|
|
197
|
-
" ldarx %0,0,%5
|
|
197
|
+
" ldarx %0,0,%5,1 \n"
|
|
198
198
|
" cmpd %0,%3 \n"
|
|
199
|
-
" bne $+12 \n" /* branch to
|
|
199
|
+
" bne $+12 \n" /* branch to lwsync */
|
|
200
200
|
" stdcx. %4,0,%5 \n"
|
|
201
201
|
" bne $-16 \n" /* branch to ldarx */
|
|
202
|
-
"
|
|
202
|
+
" lwsync \n"
|
|
203
203
|
" mfcr %1 \n"
|
|
204
204
|
: "=&r"(found), "=r"(condition_register), "+m"(ptr->value)
|
|
205
205
|
: "r"(*expected), "r"(newval), "r"(&ptr->value)
|
|
@@ -224,11 +224,11 @@ pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_)
|
|
|
224
224
|
add_ <= PG_INT16_MAX && add_ >= PG_INT16_MIN)
|
|
225
225
|
__asm__ __volatile__(
|
|
226
226
|
" sync \n"
|
|
227
|
-
" ldarx %1,0,%4
|
|
227
|
+
" ldarx %1,0,%4,1 \n"
|
|
228
228
|
" addi %0,%1,%3 \n"
|
|
229
229
|
" stdcx. %0,0,%4 \n"
|
|
230
230
|
" bne $-12 \n" /* branch to ldarx */
|
|
231
|
-
"
|
|
231
|
+
" lwsync \n"
|
|
232
232
|
: "=&r"(_t), "=&b"(res), "+m"(ptr->value)
|
|
233
233
|
: "i"(add_), "r"(&ptr->value)
|
|
234
234
|
: "memory", "cc");
|
|
@@ -236,11 +236,11 @@ pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_)
|
|
|
236
236
|
#endif
|
|
237
237
|
__asm__ __volatile__(
|
|
238
238
|
" sync \n"
|
|
239
|
-
" ldarx %1,0,%4
|
|
239
|
+
" ldarx %1,0,%4,1 \n"
|
|
240
240
|
" add %0,%1,%3 \n"
|
|
241
241
|
" stdcx. %0,0,%4 \n"
|
|
242
242
|
" bne $-12 \n" /* branch to ldarx */
|
|
243
|
-
"
|
|
243
|
+
" lwsync \n"
|
|
244
244
|
: "=&r"(_t), "=&r"(res), "+m"(ptr->value)
|
|
245
245
|
: "r"(add_), "r"(&ptr->value)
|
|
246
246
|
: "memory", "cc");
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* support for xadd and cmpxchg. Given that the 386 isn't supported anywhere
|
|
8
8
|
* anymore that's not much of a restriction luckily.
|
|
9
9
|
*
|
|
10
|
-
* Portions Copyright (c) 1996-
|
|
10
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
11
11
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
12
12
|
*
|
|
13
13
|
* NOTES:
|
|
@@ -140,7 +140,7 @@ pg_spin_delay_impl(void)
|
|
|
140
140
|
static inline bool
|
|
141
141
|
pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr)
|
|
142
142
|
{
|
|
143
|
-
|
|
143
|
+
char _res = 1;
|
|
144
144
|
|
|
145
145
|
__asm__ __volatile__(
|
|
146
146
|
" lock \n"
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Fallback for platforms without spinlock and/or atomics support. Slower
|
|
5
5
|
* than native atomics support, but not unusably slow.
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/port/atomics/fallback.h
|
|
@@ -93,7 +93,7 @@ typedef struct pg_atomic_flag
|
|
|
93
93
|
typedef struct pg_atomic_uint32
|
|
94
94
|
{
|
|
95
95
|
/* Check pg_atomic_flag's definition above for an explanation */
|
|
96
|
-
#if defined(__hppa) || defined(__hppa__) /* HP PA-RISC
|
|
96
|
+
#if defined(__hppa) || defined(__hppa__) /* HP PA-RISC */
|
|
97
97
|
int sema[4];
|
|
98
98
|
#else
|
|
99
99
|
int sema;
|
|
@@ -111,7 +111,7 @@ typedef struct pg_atomic_uint32
|
|
|
111
111
|
typedef struct pg_atomic_uint64
|
|
112
112
|
{
|
|
113
113
|
/* Check pg_atomic_flag's definition above for an explanation */
|
|
114
|
-
#if defined(__hppa) || defined(__hppa__) /* HP PA-RISC
|
|
114
|
+
#if defined(__hppa) || defined(__hppa__) /* HP PA-RISC */
|
|
115
115
|
int sema[4];
|
|
116
116
|
#else
|
|
117
117
|
int sema;
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
* generic-gcc.h
|
|
4
4
|
* Atomic operations, implemented using gcc (or compatible) intrinsics.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* NOTES:
|
|
10
10
|
*
|
|
11
11
|
* Documentation:
|
|
12
12
|
* * Legacy __sync Built-in Functions for Atomic Memory Access
|
|
13
|
-
*
|
|
13
|
+
* https://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/_005f_005fsync-Builtins.html
|
|
14
14
|
* * Built-in functions for memory model aware atomic operations
|
|
15
|
-
*
|
|
15
|
+
* https://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/_005f_005fatomic-Builtins.html
|
|
16
16
|
*
|
|
17
17
|
* src/include/port/atomics/generic-gcc.h
|
|
18
18
|
*
|