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
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Definition of (and support for) access control list data structures.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/utils/acl.h
|
|
@@ -59,33 +59,33 @@ typedef struct AclItem
|
|
|
59
59
|
} AclItem;
|
|
60
60
|
|
|
61
61
|
/*
|
|
62
|
-
* The upper
|
|
63
|
-
* bits, and the lower
|
|
62
|
+
* The upper 32 bits of the ai_privs field of an AclItem are the grant option
|
|
63
|
+
* bits, and the lower 32 bits are the actual privileges. We use "rights"
|
|
64
64
|
* to mean the combined grant option and privilege bits fields.
|
|
65
65
|
*/
|
|
66
|
-
#define ACLITEM_GET_PRIVS(item) ((item).ai_privs &
|
|
67
|
-
#define ACLITEM_GET_GOPTIONS(item) (((item).ai_privs >>
|
|
66
|
+
#define ACLITEM_GET_PRIVS(item) ((item).ai_privs & 0xFFFFFFFF)
|
|
67
|
+
#define ACLITEM_GET_GOPTIONS(item) (((item).ai_privs >> 32) & 0xFFFFFFFF)
|
|
68
68
|
#define ACLITEM_GET_RIGHTS(item) ((item).ai_privs)
|
|
69
69
|
|
|
70
|
-
#define ACL_GRANT_OPTION_FOR(privs) (((AclMode) (privs) &
|
|
71
|
-
#define ACL_OPTION_TO_PRIVS(privs) (((AclMode) (privs) >>
|
|
70
|
+
#define ACL_GRANT_OPTION_FOR(privs) (((AclMode) (privs) & 0xFFFFFFFF) << 32)
|
|
71
|
+
#define ACL_OPTION_TO_PRIVS(privs) (((AclMode) (privs) >> 32) & 0xFFFFFFFF)
|
|
72
72
|
|
|
73
73
|
#define ACLITEM_SET_PRIVS(item,privs) \
|
|
74
|
-
((item).ai_privs = ((item).ai_privs & ~((AclMode)
|
|
75
|
-
((AclMode) (privs) &
|
|
74
|
+
((item).ai_privs = ((item).ai_privs & ~((AclMode) 0xFFFFFFFF)) | \
|
|
75
|
+
((AclMode) (privs) & 0xFFFFFFFF))
|
|
76
76
|
#define ACLITEM_SET_GOPTIONS(item,goptions) \
|
|
77
|
-
((item).ai_privs = ((item).ai_privs & ~(((AclMode)
|
|
78
|
-
(((AclMode) (goptions) &
|
|
77
|
+
((item).ai_privs = ((item).ai_privs & ~(((AclMode) 0xFFFFFFFF) << 32)) | \
|
|
78
|
+
(((AclMode) (goptions) & 0xFFFFFFFF) << 32))
|
|
79
79
|
#define ACLITEM_SET_RIGHTS(item,rights) \
|
|
80
80
|
((item).ai_privs = (AclMode) (rights))
|
|
81
81
|
|
|
82
82
|
#define ACLITEM_SET_PRIVS_GOPTIONS(item,privs,goptions) \
|
|
83
|
-
((item).ai_privs = ((AclMode) (privs) &
|
|
84
|
-
(((AclMode) (goptions) &
|
|
83
|
+
((item).ai_privs = ((AclMode) (privs) & 0xFFFFFFFF) | \
|
|
84
|
+
(((AclMode) (goptions) & 0xFFFFFFFF) << 32))
|
|
85
85
|
|
|
86
86
|
|
|
87
|
-
#define ACLITEM_ALL_PRIV_BITS ((AclMode)
|
|
88
|
-
#define ACLITEM_ALL_GOPTION_BITS ((AclMode)
|
|
87
|
+
#define ACLITEM_ALL_PRIV_BITS ((AclMode) 0xFFFFFFFF)
|
|
88
|
+
#define ACLITEM_ALL_GOPTION_BITS ((AclMode) 0xFFFFFFFF << 32)
|
|
89
89
|
|
|
90
90
|
/*
|
|
91
91
|
* Definitions for convenient access to Acl (array of AclItem).
|
|
@@ -146,9 +146,11 @@ typedef struct ArrayType Acl;
|
|
|
146
146
|
#define ACL_CREATE_CHR 'C'
|
|
147
147
|
#define ACL_CREATE_TEMP_CHR 'T'
|
|
148
148
|
#define ACL_CONNECT_CHR 'c'
|
|
149
|
+
#define ACL_SET_CHR 's'
|
|
150
|
+
#define ACL_ALTER_SYSTEM_CHR 'A'
|
|
149
151
|
|
|
150
152
|
/* string holding all privilege code chars, in order by bitmask position */
|
|
151
|
-
#define ACL_ALL_RIGHTS_STR "
|
|
153
|
+
#define ACL_ALL_RIGHTS_STR "arwdDxtXUCTcsA"
|
|
152
154
|
|
|
153
155
|
/*
|
|
154
156
|
* Bitmasks defining "all rights" for each supported object type
|
|
@@ -162,6 +164,7 @@ typedef struct ArrayType Acl;
|
|
|
162
164
|
#define ACL_ALL_RIGHTS_FUNCTION (ACL_EXECUTE)
|
|
163
165
|
#define ACL_ALL_RIGHTS_LANGUAGE (ACL_USAGE)
|
|
164
166
|
#define ACL_ALL_RIGHTS_LARGEOBJECT (ACL_SELECT|ACL_UPDATE)
|
|
167
|
+
#define ACL_ALL_RIGHTS_PARAMETER_ACL (ACL_SET|ACL_ALTER_SYSTEM)
|
|
165
168
|
#define ACL_ALL_RIGHTS_SCHEMA (ACL_USAGE|ACL_CREATE)
|
|
166
169
|
#define ACL_ALL_RIGHTS_TABLESPACE (ACL_CREATE)
|
|
167
170
|
#define ACL_ALL_RIGHTS_TYPE (ACL_USAGE)
|
|
@@ -206,12 +209,14 @@ extern AclMode aclmask(const Acl *acl, Oid roleid, Oid ownerId,
|
|
|
206
209
|
extern int aclmembers(const Acl *acl, Oid **roleids);
|
|
207
210
|
|
|
208
211
|
extern bool has_privs_of_role(Oid member, Oid role);
|
|
212
|
+
extern bool member_can_set_role(Oid member, Oid role);
|
|
213
|
+
extern void check_can_set_role(Oid member, Oid role);
|
|
209
214
|
extern bool is_member_of_role(Oid member, Oid role);
|
|
210
215
|
extern bool is_member_of_role_nosuper(Oid member, Oid role);
|
|
211
216
|
extern bool is_admin_of_role(Oid member, Oid role);
|
|
212
|
-
extern
|
|
213
|
-
extern Oid get_role_oid(const char *
|
|
214
|
-
extern Oid get_role_oid_or_public(const char *
|
|
217
|
+
extern Oid select_best_admin(Oid member, Oid role);
|
|
218
|
+
extern Oid get_role_oid(const char *rolname, bool missing_ok);
|
|
219
|
+
extern Oid get_role_oid_or_public(const char *rolname);
|
|
215
220
|
extern Oid get_rolespec_oid(const RoleSpec *role, bool missing_ok);
|
|
216
221
|
extern void check_rolespec_name(const RoleSpec *role, const char *detail_msg);
|
|
217
222
|
extern HeapTuple get_rolespec_tuple(const RoleSpec *role);
|
|
@@ -230,46 +235,28 @@ extern void ExecuteGrantStmt(GrantStmt *stmt);
|
|
|
230
235
|
extern void ExecAlterDefaultPrivilegesStmt(ParseState *pstate, AlterDefaultPrivilegesStmt *stmt);
|
|
231
236
|
|
|
232
237
|
extern void RemoveRoleFromObjectACL(Oid roleid, Oid classid, Oid objid);
|
|
233
|
-
extern void RemoveDefaultACLById(Oid defaclOid);
|
|
234
238
|
|
|
235
|
-
extern AclMode pg_attribute_aclmask(Oid table_oid, AttrNumber attnum,
|
|
236
|
-
Oid roleid, AclMode mask, AclMaskHow how);
|
|
237
239
|
extern AclMode pg_class_aclmask(Oid table_oid, Oid roleid,
|
|
238
240
|
AclMode mask, AclMaskHow how);
|
|
239
|
-
extern AclMode pg_database_aclmask(Oid db_oid, Oid roleid,
|
|
240
|
-
AclMode mask, AclMaskHow how);
|
|
241
|
-
extern AclMode pg_proc_aclmask(Oid proc_oid, Oid roleid,
|
|
242
|
-
AclMode mask, AclMaskHow how);
|
|
243
|
-
extern AclMode pg_language_aclmask(Oid lang_oid, Oid roleid,
|
|
244
|
-
AclMode mask, AclMaskHow how);
|
|
245
|
-
extern AclMode pg_largeobject_aclmask_snapshot(Oid lobj_oid, Oid roleid,
|
|
246
|
-
AclMode mask, AclMaskHow how, Snapshot snapshot);
|
|
247
|
-
extern AclMode pg_namespace_aclmask(Oid nsp_oid, Oid roleid,
|
|
248
|
-
AclMode mask, AclMaskHow how);
|
|
249
|
-
extern AclMode pg_tablespace_aclmask(Oid spc_oid, Oid roleid,
|
|
250
|
-
AclMode mask, AclMaskHow how);
|
|
251
|
-
extern AclMode pg_foreign_data_wrapper_aclmask(Oid fdw_oid, Oid roleid,
|
|
252
|
-
AclMode mask, AclMaskHow how);
|
|
253
|
-
extern AclMode pg_foreign_server_aclmask(Oid srv_oid, Oid roleid,
|
|
254
|
-
AclMode mask, AclMaskHow how);
|
|
255
|
-
extern AclMode pg_type_aclmask(Oid type_oid, Oid roleid,
|
|
256
|
-
AclMode mask, AclMaskHow how);
|
|
257
241
|
|
|
242
|
+
/* generic function */
|
|
243
|
+
extern AclResult object_aclcheck(Oid classid, Oid objectid, Oid roleid, AclMode mode);
|
|
244
|
+
|
|
245
|
+
/* special cases */
|
|
258
246
|
extern AclResult pg_attribute_aclcheck(Oid table_oid, AttrNumber attnum,
|
|
259
247
|
Oid roleid, AclMode mode);
|
|
248
|
+
extern AclResult pg_attribute_aclcheck_ext(Oid table_oid, AttrNumber attnum,
|
|
249
|
+
Oid roleid, AclMode mode,
|
|
250
|
+
bool *is_missing);
|
|
260
251
|
extern AclResult pg_attribute_aclcheck_all(Oid table_oid, Oid roleid,
|
|
261
252
|
AclMode mode, AclMaskHow how);
|
|
262
253
|
extern AclResult pg_class_aclcheck(Oid table_oid, Oid roleid, AclMode mode);
|
|
263
|
-
extern AclResult
|
|
264
|
-
|
|
265
|
-
extern AclResult
|
|
266
|
-
|
|
254
|
+
extern AclResult pg_class_aclcheck_ext(Oid table_oid, Oid roleid,
|
|
255
|
+
AclMode mode, bool *is_missing);
|
|
256
|
+
extern AclResult pg_parameter_aclcheck(const char *name, Oid roleid,
|
|
257
|
+
AclMode mode);
|
|
258
|
+
extern AclResult pg_largeobject_aclcheck_snapshot(Oid lobj_oid, Oid roleid,
|
|
267
259
|
AclMode mode, Snapshot snapshot);
|
|
268
|
-
extern AclResult pg_namespace_aclcheck(Oid nsp_oid, Oid roleid, AclMode mode);
|
|
269
|
-
extern AclResult pg_tablespace_aclcheck(Oid spc_oid, Oid roleid, AclMode mode);
|
|
270
|
-
extern AclResult pg_foreign_data_wrapper_aclcheck(Oid fdw_oid, Oid roleid, AclMode mode);
|
|
271
|
-
extern AclResult pg_foreign_server_aclcheck(Oid srv_oid, Oid roleid, AclMode mode);
|
|
272
|
-
extern AclResult pg_type_aclcheck(Oid type_oid, Oid roleid, AclMode mode);
|
|
273
260
|
|
|
274
261
|
extern void aclcheck_error(AclResult aclerr, ObjectType objtype,
|
|
275
262
|
const char *objectname);
|
|
@@ -284,28 +271,7 @@ extern void removeExtObjInitPriv(Oid objoid, Oid classoid);
|
|
|
284
271
|
|
|
285
272
|
|
|
286
273
|
/* ownercheck routines just return true (owner) or false (not) */
|
|
287
|
-
extern bool
|
|
288
|
-
extern bool pg_type_ownercheck(Oid type_oid, Oid roleid);
|
|
289
|
-
extern bool pg_oper_ownercheck(Oid oper_oid, Oid roleid);
|
|
290
|
-
extern bool pg_proc_ownercheck(Oid proc_oid, Oid roleid);
|
|
291
|
-
extern bool pg_language_ownercheck(Oid lan_oid, Oid roleid);
|
|
292
|
-
extern bool pg_largeobject_ownercheck(Oid lobj_oid, Oid roleid);
|
|
293
|
-
extern bool pg_namespace_ownercheck(Oid nsp_oid, Oid roleid);
|
|
294
|
-
extern bool pg_tablespace_ownercheck(Oid spc_oid, Oid roleid);
|
|
295
|
-
extern bool pg_opclass_ownercheck(Oid opc_oid, Oid roleid);
|
|
296
|
-
extern bool pg_opfamily_ownercheck(Oid opf_oid, Oid roleid);
|
|
297
|
-
extern bool pg_database_ownercheck(Oid db_oid, Oid roleid);
|
|
298
|
-
extern bool pg_collation_ownercheck(Oid coll_oid, Oid roleid);
|
|
299
|
-
extern bool pg_conversion_ownercheck(Oid conv_oid, Oid roleid);
|
|
300
|
-
extern bool pg_ts_dict_ownercheck(Oid dict_oid, Oid roleid);
|
|
301
|
-
extern bool pg_ts_config_ownercheck(Oid cfg_oid, Oid roleid);
|
|
302
|
-
extern bool pg_foreign_data_wrapper_ownercheck(Oid srv_oid, Oid roleid);
|
|
303
|
-
extern bool pg_foreign_server_ownercheck(Oid srv_oid, Oid roleid);
|
|
304
|
-
extern bool pg_event_trigger_ownercheck(Oid et_oid, Oid roleid);
|
|
305
|
-
extern bool pg_extension_ownercheck(Oid ext_oid, Oid roleid);
|
|
306
|
-
extern bool pg_publication_ownercheck(Oid pub_oid, Oid roleid);
|
|
307
|
-
extern bool pg_subscription_ownercheck(Oid sub_oid, Oid roleid);
|
|
308
|
-
extern bool pg_statistics_object_ownercheck(Oid stat_oid, Oid roleid);
|
|
274
|
+
extern bool object_ownercheck(Oid classid, Oid objectid, Oid roleid);
|
|
309
275
|
extern bool has_createrole_privilege(Oid roleid);
|
|
310
276
|
extern bool has_bypassrls_privilege(Oid roleid);
|
|
311
277
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
*
|
|
3
3
|
* aclchk_internal.h
|
|
4
4
|
*
|
|
5
|
-
* Portions Copyright (c) 1996-
|
|
5
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
6
6
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
7
7
|
*
|
|
8
8
|
* src/include/utils/aclchk_internal.h
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
* arrays holding the elements.
|
|
52
52
|
*
|
|
53
53
|
*
|
|
54
|
-
* Portions Copyright (c) 1996-
|
|
54
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
55
55
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
56
56
|
*
|
|
57
57
|
* src/include/utils/array.h
|
|
@@ -69,6 +69,18 @@ struct ExprState;
|
|
|
69
69
|
struct ExprContext;
|
|
70
70
|
|
|
71
71
|
|
|
72
|
+
/*
|
|
73
|
+
* Maximum number of array subscripts (arbitrary limit)
|
|
74
|
+
*/
|
|
75
|
+
#define MAXDIM 6
|
|
76
|
+
|
|
77
|
+
/*
|
|
78
|
+
* Maximum number of elements in an array. We limit this to at most about a
|
|
79
|
+
* quarter billion elements, so that it's not necessary to check for overflow
|
|
80
|
+
* in quite so many places --- for instance when palloc'ing Datum arrays.
|
|
81
|
+
*/
|
|
82
|
+
#define MaxArraySize ((Size) (MaxAllocSize / sizeof(Datum)))
|
|
83
|
+
|
|
72
84
|
/*
|
|
73
85
|
* Arrays are varlena objects, so must meet the varlena convention that
|
|
74
86
|
* the first int32 of the object contains the total object size in bytes.
|
|
@@ -334,7 +346,7 @@ typedef struct ArrayIteratorData *ArrayIterator;
|
|
|
334
346
|
/*
|
|
335
347
|
* GUC parameter
|
|
336
348
|
*/
|
|
337
|
-
extern bool Array_nulls;
|
|
349
|
+
extern PGDLLIMPORT bool Array_nulls;
|
|
338
350
|
|
|
339
351
|
/*
|
|
340
352
|
* prototypes for functions defined in arrayfuncs.c
|
|
@@ -382,6 +394,7 @@ extern void array_bitmap_copy(bits8 *destbitmap, int destoffset,
|
|
|
382
394
|
extern ArrayType *construct_array(Datum *elems, int nelems,
|
|
383
395
|
Oid elmtype,
|
|
384
396
|
int elmlen, bool elmbyval, char elmalign);
|
|
397
|
+
extern ArrayType *construct_array_builtin(Datum *elems, int nelems, Oid elmtype);
|
|
385
398
|
extern ArrayType *construct_md_array(Datum *elems,
|
|
386
399
|
bool *nulls,
|
|
387
400
|
int ndims,
|
|
@@ -396,10 +409,16 @@ extern void deconstruct_array(ArrayType *array,
|
|
|
396
409
|
Oid elmtype,
|
|
397
410
|
int elmlen, bool elmbyval, char elmalign,
|
|
398
411
|
Datum **elemsp, bool **nullsp, int *nelemsp);
|
|
412
|
+
extern void deconstruct_array_builtin(ArrayType *array,
|
|
413
|
+
Oid elmtype,
|
|
414
|
+
Datum **elemsp, bool **nullsp, int *nelemsp);
|
|
399
415
|
extern bool array_contains_nulls(ArrayType *array);
|
|
400
416
|
|
|
401
417
|
extern ArrayBuildState *initArrayResult(Oid element_type,
|
|
402
418
|
MemoryContext rcontext, bool subcontext);
|
|
419
|
+
extern ArrayBuildState *initArrayResultWithSize(Oid element_type,
|
|
420
|
+
MemoryContext rcontext,
|
|
421
|
+
bool subcontext, int initsize);
|
|
403
422
|
extern ArrayBuildState *accumArrayResult(ArrayBuildState *astate,
|
|
404
423
|
Datum dvalue, bool disnull,
|
|
405
424
|
Oid element_type,
|
|
@@ -438,6 +457,11 @@ extern void array_free_iterator(ArrayIterator iterator);
|
|
|
438
457
|
extern int ArrayGetOffset(int n, const int *dim, const int *lb, const int *indx);
|
|
439
458
|
extern int ArrayGetOffset0(int n, const int *tup, const int *scale);
|
|
440
459
|
extern int ArrayGetNItems(int ndim, const int *dims);
|
|
460
|
+
extern int ArrayGetNItemsSafe(int ndim, const int *dims,
|
|
461
|
+
struct Node *escontext);
|
|
462
|
+
extern void ArrayCheckBounds(int ndim, const int *dims, const int *lb);
|
|
463
|
+
extern bool ArrayCheckBoundsSafe(int ndim, const int *dims, const int *lb,
|
|
464
|
+
struct Node *escontext);
|
|
441
465
|
extern void mda_get_range(int n, int *span, const int *st, const int *endp);
|
|
442
466
|
extern void mda_get_prod(int n, const int *range, int *prod);
|
|
443
467
|
extern void mda_get_offset_values(int n, int *dist, const int *prod, const int *span);
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/* ----------
|
|
2
|
+
* backend_progress.h
|
|
3
|
+
* Command progress reporting definition.
|
|
4
|
+
*
|
|
5
|
+
* Note that this file provides the infrastructure for storing a single
|
|
6
|
+
* backend's command progress counters, without ascribing meaning to the
|
|
7
|
+
* individual fields. See commands/progress.h and system_views.sql for that.
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) 2001-2023, PostgreSQL Global Development Group
|
|
10
|
+
*
|
|
11
|
+
* src/include/utils/backend_progress.h
|
|
12
|
+
* ----------
|
|
13
|
+
*/
|
|
14
|
+
#ifndef BACKEND_PROGRESS_H
|
|
15
|
+
#define BACKEND_PROGRESS_H
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
/* ----------
|
|
19
|
+
* Command type for progress reporting purposes
|
|
20
|
+
* ----------
|
|
21
|
+
*/
|
|
22
|
+
typedef enum ProgressCommandType
|
|
23
|
+
{
|
|
24
|
+
PROGRESS_COMMAND_INVALID,
|
|
25
|
+
PROGRESS_COMMAND_VACUUM,
|
|
26
|
+
PROGRESS_COMMAND_ANALYZE,
|
|
27
|
+
PROGRESS_COMMAND_CLUSTER,
|
|
28
|
+
PROGRESS_COMMAND_CREATE_INDEX,
|
|
29
|
+
PROGRESS_COMMAND_BASEBACKUP,
|
|
30
|
+
PROGRESS_COMMAND_COPY
|
|
31
|
+
} ProgressCommandType;
|
|
32
|
+
|
|
33
|
+
#define PGSTAT_NUM_PROGRESS_PARAM 20
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
extern void pgstat_progress_start_command(ProgressCommandType cmdtype,
|
|
37
|
+
Oid relid);
|
|
38
|
+
extern void pgstat_progress_update_param(int index, int64 val);
|
|
39
|
+
extern void pgstat_progress_incr_param(int index, int64 incr);
|
|
40
|
+
extern void pgstat_progress_update_multi_param(int nparam, const int *index,
|
|
41
|
+
const int64 *val);
|
|
42
|
+
extern void pgstat_progress_end_command(void);
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
#endif /* BACKEND_PROGRESS_H */
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
/* ----------
|
|
2
|
+
* backend_status.h
|
|
3
|
+
* Definitions related to backend status reporting
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2001-2023, PostgreSQL Global Development Group
|
|
6
|
+
*
|
|
7
|
+
* src/include/utils/backend_status.h
|
|
8
|
+
* ----------
|
|
9
|
+
*/
|
|
10
|
+
#ifndef BACKEND_STATUS_H
|
|
11
|
+
#define BACKEND_STATUS_H
|
|
12
|
+
|
|
13
|
+
#include "datatype/timestamp.h"
|
|
14
|
+
#include "libpq/pqcomm.h"
|
|
15
|
+
#include "miscadmin.h" /* for BackendType */
|
|
16
|
+
#include "storage/backendid.h"
|
|
17
|
+
#include "utils/backend_progress.h"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
/* ----------
|
|
21
|
+
* Backend states
|
|
22
|
+
* ----------
|
|
23
|
+
*/
|
|
24
|
+
typedef enum BackendState
|
|
25
|
+
{
|
|
26
|
+
STATE_UNDEFINED,
|
|
27
|
+
STATE_IDLE,
|
|
28
|
+
STATE_RUNNING,
|
|
29
|
+
STATE_IDLEINTRANSACTION,
|
|
30
|
+
STATE_FASTPATH,
|
|
31
|
+
STATE_IDLEINTRANSACTION_ABORTED,
|
|
32
|
+
STATE_DISABLED
|
|
33
|
+
} BackendState;
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
/* ----------
|
|
37
|
+
* Shared-memory data structures
|
|
38
|
+
* ----------
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
/*
|
|
42
|
+
* PgBackendSSLStatus
|
|
43
|
+
*
|
|
44
|
+
* For each backend, we keep the SSL status in a separate struct, that
|
|
45
|
+
* is only filled in if SSL is enabled.
|
|
46
|
+
*
|
|
47
|
+
* All char arrays must be null-terminated.
|
|
48
|
+
*/
|
|
49
|
+
typedef struct PgBackendSSLStatus
|
|
50
|
+
{
|
|
51
|
+
/* Information about SSL connection */
|
|
52
|
+
int ssl_bits;
|
|
53
|
+
char ssl_version[NAMEDATALEN];
|
|
54
|
+
char ssl_cipher[NAMEDATALEN];
|
|
55
|
+
char ssl_client_dn[NAMEDATALEN];
|
|
56
|
+
|
|
57
|
+
/*
|
|
58
|
+
* serial number is max "20 octets" per RFC 5280, so this size should be
|
|
59
|
+
* fine
|
|
60
|
+
*/
|
|
61
|
+
char ssl_client_serial[NAMEDATALEN];
|
|
62
|
+
|
|
63
|
+
char ssl_issuer_dn[NAMEDATALEN];
|
|
64
|
+
} PgBackendSSLStatus;
|
|
65
|
+
|
|
66
|
+
/*
|
|
67
|
+
* PgBackendGSSStatus
|
|
68
|
+
*
|
|
69
|
+
* For each backend, we keep the GSS status in a separate struct, that
|
|
70
|
+
* is only filled in if GSS is enabled.
|
|
71
|
+
*
|
|
72
|
+
* All char arrays must be null-terminated.
|
|
73
|
+
*/
|
|
74
|
+
typedef struct PgBackendGSSStatus
|
|
75
|
+
{
|
|
76
|
+
/* Information about GSSAPI connection */
|
|
77
|
+
char gss_princ[NAMEDATALEN]; /* GSSAPI Principal used to auth */
|
|
78
|
+
bool gss_auth; /* If GSSAPI authentication was used */
|
|
79
|
+
bool gss_enc; /* If encryption is being used */
|
|
80
|
+
bool gss_delegation; /* If credentials delegated */
|
|
81
|
+
|
|
82
|
+
} PgBackendGSSStatus;
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
/* ----------
|
|
86
|
+
* PgBackendStatus
|
|
87
|
+
*
|
|
88
|
+
* Each live backend maintains a PgBackendStatus struct in shared memory
|
|
89
|
+
* showing its current activity. (The structs are allocated according to
|
|
90
|
+
* BackendId, but that is not critical.) Note that this is unrelated to the
|
|
91
|
+
* cumulative stats system (i.e. pgstat.c et al).
|
|
92
|
+
*
|
|
93
|
+
* Each auxiliary process also maintains a PgBackendStatus struct in shared
|
|
94
|
+
* memory.
|
|
95
|
+
* ----------
|
|
96
|
+
*/
|
|
97
|
+
typedef struct PgBackendStatus
|
|
98
|
+
{
|
|
99
|
+
/*
|
|
100
|
+
* To avoid locking overhead, we use the following protocol: a backend
|
|
101
|
+
* increments st_changecount before modifying its entry, and again after
|
|
102
|
+
* finishing a modification. A would-be reader should note the value of
|
|
103
|
+
* st_changecount, copy the entry into private memory, then check
|
|
104
|
+
* st_changecount again. If the value hasn't changed, and if it's even,
|
|
105
|
+
* the copy is valid; otherwise start over. This makes updates cheap
|
|
106
|
+
* while reads are potentially expensive, but that's the tradeoff we want.
|
|
107
|
+
*
|
|
108
|
+
* The above protocol needs memory barriers to ensure that the apparent
|
|
109
|
+
* order of execution is as it desires. Otherwise, for example, the CPU
|
|
110
|
+
* might rearrange the code so that st_changecount is incremented twice
|
|
111
|
+
* before the modification on a machine with weak memory ordering. Hence,
|
|
112
|
+
* use the macros defined below for manipulating st_changecount, rather
|
|
113
|
+
* than touching it directly.
|
|
114
|
+
*/
|
|
115
|
+
int st_changecount;
|
|
116
|
+
|
|
117
|
+
/* The entry is valid iff st_procpid > 0, unused if st_procpid == 0 */
|
|
118
|
+
int st_procpid;
|
|
119
|
+
|
|
120
|
+
/* Type of backends */
|
|
121
|
+
BackendType st_backendType;
|
|
122
|
+
|
|
123
|
+
/* Times when current backend, transaction, and activity started */
|
|
124
|
+
TimestampTz st_proc_start_timestamp;
|
|
125
|
+
TimestampTz st_xact_start_timestamp;
|
|
126
|
+
TimestampTz st_activity_start_timestamp;
|
|
127
|
+
TimestampTz st_state_start_timestamp;
|
|
128
|
+
|
|
129
|
+
/* Database OID, owning user's OID, connection client address */
|
|
130
|
+
Oid st_databaseid;
|
|
131
|
+
Oid st_userid;
|
|
132
|
+
SockAddr st_clientaddr;
|
|
133
|
+
char *st_clienthostname; /* MUST be null-terminated */
|
|
134
|
+
|
|
135
|
+
/* Information about SSL connection */
|
|
136
|
+
bool st_ssl;
|
|
137
|
+
PgBackendSSLStatus *st_sslstatus;
|
|
138
|
+
|
|
139
|
+
/* Information about GSSAPI connection */
|
|
140
|
+
bool st_gss;
|
|
141
|
+
PgBackendGSSStatus *st_gssstatus;
|
|
142
|
+
|
|
143
|
+
/* current state */
|
|
144
|
+
BackendState st_state;
|
|
145
|
+
|
|
146
|
+
/* application name; MUST be null-terminated */
|
|
147
|
+
char *st_appname;
|
|
148
|
+
|
|
149
|
+
/*
|
|
150
|
+
* Current command string; MUST be null-terminated. Note that this string
|
|
151
|
+
* possibly is truncated in the middle of a multi-byte character. As
|
|
152
|
+
* activity strings are stored more frequently than read, that allows to
|
|
153
|
+
* move the cost of correct truncation to the display side. Use
|
|
154
|
+
* pgstat_clip_activity() to truncate correctly.
|
|
155
|
+
*/
|
|
156
|
+
char *st_activity_raw;
|
|
157
|
+
|
|
158
|
+
/*
|
|
159
|
+
* Command progress reporting. Any command which wishes can advertise
|
|
160
|
+
* that it is running by setting st_progress_command,
|
|
161
|
+
* st_progress_command_target, and st_progress_param[].
|
|
162
|
+
* st_progress_command_target should be the OID of the relation which the
|
|
163
|
+
* command targets (we assume there's just one, as this is meant for
|
|
164
|
+
* utility commands), but the meaning of each element in the
|
|
165
|
+
* st_progress_param array is command-specific.
|
|
166
|
+
*/
|
|
167
|
+
ProgressCommandType st_progress_command;
|
|
168
|
+
Oid st_progress_command_target;
|
|
169
|
+
int64 st_progress_param[PGSTAT_NUM_PROGRESS_PARAM];
|
|
170
|
+
|
|
171
|
+
/* query identifier, optionally computed using post_parse_analyze_hook */
|
|
172
|
+
uint64 st_query_id;
|
|
173
|
+
} PgBackendStatus;
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
/*
|
|
177
|
+
* Macros to load and store st_changecount with appropriate memory barriers.
|
|
178
|
+
*
|
|
179
|
+
* Use PGSTAT_BEGIN_WRITE_ACTIVITY() before, and PGSTAT_END_WRITE_ACTIVITY()
|
|
180
|
+
* after, modifying the current process's PgBackendStatus data. Note that,
|
|
181
|
+
* since there is no mechanism for cleaning up st_changecount after an error,
|
|
182
|
+
* THESE MACROS FORM A CRITICAL SECTION. Any error between them will be
|
|
183
|
+
* promoted to PANIC, causing a database restart to clean up shared memory!
|
|
184
|
+
* Hence, keep the critical section as short and straight-line as possible.
|
|
185
|
+
* Aside from being safer, that minimizes the window in which readers will
|
|
186
|
+
* have to loop.
|
|
187
|
+
*
|
|
188
|
+
* Reader logic should follow this sketch:
|
|
189
|
+
*
|
|
190
|
+
* for (;;)
|
|
191
|
+
* {
|
|
192
|
+
* int before_ct, after_ct;
|
|
193
|
+
*
|
|
194
|
+
* pgstat_begin_read_activity(beentry, before_ct);
|
|
195
|
+
* ... copy beentry data to local memory ...
|
|
196
|
+
* pgstat_end_read_activity(beentry, after_ct);
|
|
197
|
+
* if (pgstat_read_activity_complete(before_ct, after_ct))
|
|
198
|
+
* break;
|
|
199
|
+
* CHECK_FOR_INTERRUPTS();
|
|
200
|
+
* }
|
|
201
|
+
*
|
|
202
|
+
* For extra safety, we generally use volatile beentry pointers, although
|
|
203
|
+
* the memory barriers should theoretically be sufficient.
|
|
204
|
+
*/
|
|
205
|
+
#define PGSTAT_BEGIN_WRITE_ACTIVITY(beentry) \
|
|
206
|
+
do { \
|
|
207
|
+
START_CRIT_SECTION(); \
|
|
208
|
+
(beentry)->st_changecount++; \
|
|
209
|
+
pg_write_barrier(); \
|
|
210
|
+
} while (0)
|
|
211
|
+
|
|
212
|
+
#define PGSTAT_END_WRITE_ACTIVITY(beentry) \
|
|
213
|
+
do { \
|
|
214
|
+
pg_write_barrier(); \
|
|
215
|
+
(beentry)->st_changecount++; \
|
|
216
|
+
Assert(((beentry)->st_changecount & 1) == 0); \
|
|
217
|
+
END_CRIT_SECTION(); \
|
|
218
|
+
} while (0)
|
|
219
|
+
|
|
220
|
+
#define pgstat_begin_read_activity(beentry, before_changecount) \
|
|
221
|
+
do { \
|
|
222
|
+
(before_changecount) = (beentry)->st_changecount; \
|
|
223
|
+
pg_read_barrier(); \
|
|
224
|
+
} while (0)
|
|
225
|
+
|
|
226
|
+
#define pgstat_end_read_activity(beentry, after_changecount) \
|
|
227
|
+
do { \
|
|
228
|
+
pg_read_barrier(); \
|
|
229
|
+
(after_changecount) = (beentry)->st_changecount; \
|
|
230
|
+
} while (0)
|
|
231
|
+
|
|
232
|
+
#define pgstat_read_activity_complete(before_changecount, after_changecount) \
|
|
233
|
+
((before_changecount) == (after_changecount) && \
|
|
234
|
+
((before_changecount) & 1) == 0)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
/* ----------
|
|
238
|
+
* LocalPgBackendStatus
|
|
239
|
+
*
|
|
240
|
+
* When we build the backend status array, we use LocalPgBackendStatus to be
|
|
241
|
+
* able to add new values to the struct when needed without adding new fields
|
|
242
|
+
* to the shared memory. It contains the backend status as a first member.
|
|
243
|
+
* ----------
|
|
244
|
+
*/
|
|
245
|
+
typedef struct LocalPgBackendStatus
|
|
246
|
+
{
|
|
247
|
+
/*
|
|
248
|
+
* Local version of the backend status entry.
|
|
249
|
+
*/
|
|
250
|
+
PgBackendStatus backendStatus;
|
|
251
|
+
|
|
252
|
+
/*
|
|
253
|
+
* The backend ID. For auxiliary processes, this will be set to a value
|
|
254
|
+
* greater than MaxBackends (since auxiliary processes do not have proper
|
|
255
|
+
* backend IDs).
|
|
256
|
+
*/
|
|
257
|
+
BackendId backend_id;
|
|
258
|
+
|
|
259
|
+
/*
|
|
260
|
+
* The xid of the current transaction if available, InvalidTransactionId
|
|
261
|
+
* if not.
|
|
262
|
+
*/
|
|
263
|
+
TransactionId backend_xid;
|
|
264
|
+
|
|
265
|
+
/*
|
|
266
|
+
* The xmin of the current session if available, InvalidTransactionId if
|
|
267
|
+
* not.
|
|
268
|
+
*/
|
|
269
|
+
TransactionId backend_xmin;
|
|
270
|
+
|
|
271
|
+
/*
|
|
272
|
+
* Number of cached subtransactions in the current session.
|
|
273
|
+
*/
|
|
274
|
+
int backend_subxact_count;
|
|
275
|
+
|
|
276
|
+
/*
|
|
277
|
+
* The number of subtransactions in the current session which exceeded the
|
|
278
|
+
* cached subtransaction limit.
|
|
279
|
+
*/
|
|
280
|
+
bool backend_subxact_overflowed;
|
|
281
|
+
} LocalPgBackendStatus;
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
/* ----------
|
|
285
|
+
* GUC parameters
|
|
286
|
+
* ----------
|
|
287
|
+
*/
|
|
288
|
+
extern PGDLLIMPORT bool pgstat_track_activities;
|
|
289
|
+
extern PGDLLIMPORT int pgstat_track_activity_query_size;
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
/* ----------
|
|
293
|
+
* Other global variables
|
|
294
|
+
* ----------
|
|
295
|
+
*/
|
|
296
|
+
extern PGDLLIMPORT PgBackendStatus *MyBEEntry;
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
/* ----------
|
|
300
|
+
* Functions called from postmaster
|
|
301
|
+
* ----------
|
|
302
|
+
*/
|
|
303
|
+
extern Size BackendStatusShmemSize(void);
|
|
304
|
+
extern void CreateSharedBackendStatus(void);
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
/* ----------
|
|
308
|
+
* Functions called from backends
|
|
309
|
+
* ----------
|
|
310
|
+
*/
|
|
311
|
+
|
|
312
|
+
/* Initialization functions */
|
|
313
|
+
extern void pgstat_beinit(void);
|
|
314
|
+
extern void pgstat_bestart(void);
|
|
315
|
+
|
|
316
|
+
extern void pgstat_clear_backend_activity_snapshot(void);
|
|
317
|
+
|
|
318
|
+
/* Activity reporting functions */
|
|
319
|
+
extern void pgstat_report_activity(BackendState state, const char *cmd_str);
|
|
320
|
+
extern void pgstat_report_query_id(uint64 query_id, bool force);
|
|
321
|
+
extern void pgstat_report_tempfile(size_t filesize);
|
|
322
|
+
extern void pgstat_report_appname(const char *appname);
|
|
323
|
+
extern void pgstat_report_xact_timestamp(TimestampTz tstamp);
|
|
324
|
+
extern const char *pgstat_get_backend_current_activity(int pid, bool checkUser);
|
|
325
|
+
extern const char *pgstat_get_crashed_backend_activity(int pid, char *buffer,
|
|
326
|
+
int buflen);
|
|
327
|
+
extern uint64 pgstat_get_my_query_id(void);
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
/* ----------
|
|
331
|
+
* Support functions for the SQL-callable functions to
|
|
332
|
+
* generate the pgstat* views.
|
|
333
|
+
* ----------
|
|
334
|
+
*/
|
|
335
|
+
extern int pgstat_fetch_stat_numbackends(void);
|
|
336
|
+
extern PgBackendStatus *pgstat_get_beentry_by_backend_id(BackendId beid);
|
|
337
|
+
extern LocalPgBackendStatus *pgstat_get_local_beentry_by_backend_id(BackendId beid);
|
|
338
|
+
extern LocalPgBackendStatus *pgstat_get_local_beentry_by_index(int idx);
|
|
339
|
+
extern char *pgstat_clip_activity(const char *raw_activity);
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
#endif /* BACKEND_STATUS_H */
|