pg_query 2.0.3 → 5.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 */
|