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
|
* Standard POSTGRES buffer page definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/storage/bufpage.h
|
|
@@ -97,8 +97,12 @@ typedef struct
|
|
|
97
97
|
uint32 xrecoff; /* low bits */
|
|
98
98
|
} PageXLogRecPtr;
|
|
99
99
|
|
|
100
|
-
|
|
101
|
-
|
|
100
|
+
static inline XLogRecPtr
|
|
101
|
+
PageXLogRecPtrGet(PageXLogRecPtr val)
|
|
102
|
+
{
|
|
103
|
+
return (uint64) val.xlogid << 32 | val.xrecoff;
|
|
104
|
+
}
|
|
105
|
+
|
|
102
106
|
#define PageXLogRecPtrSet(ptr, lsn) \
|
|
103
107
|
((ptr).xlogid = (uint32) ((lsn) >> 32), (ptr).xrecoff = (uint32) (lsn))
|
|
104
108
|
|
|
@@ -200,16 +204,10 @@ typedef PageHeaderData *PageHeader;
|
|
|
200
204
|
#define PG_DATA_CHECKSUM_VERSION 1
|
|
201
205
|
|
|
202
206
|
/* ----------------------------------------------------------------
|
|
203
|
-
* page support
|
|
207
|
+
* page support functions
|
|
204
208
|
* ----------------------------------------------------------------
|
|
205
209
|
*/
|
|
206
210
|
|
|
207
|
-
/*
|
|
208
|
-
* PageIsValid
|
|
209
|
-
* True iff page is valid.
|
|
210
|
-
*/
|
|
211
|
-
#define PageIsValid(page) PointerIsValid(page)
|
|
212
|
-
|
|
213
211
|
/*
|
|
214
212
|
* line pointer(s) do not count as part of header
|
|
215
213
|
*/
|
|
@@ -219,21 +217,31 @@ typedef PageHeaderData *PageHeader;
|
|
|
219
217
|
* PageIsEmpty
|
|
220
218
|
* returns true iff no itemid has been allocated on the page
|
|
221
219
|
*/
|
|
222
|
-
|
|
223
|
-
|
|
220
|
+
static inline bool
|
|
221
|
+
PageIsEmpty(Page page)
|
|
222
|
+
{
|
|
223
|
+
return ((PageHeader) page)->pd_lower <= SizeOfPageHeaderData;
|
|
224
|
+
}
|
|
224
225
|
|
|
225
226
|
/*
|
|
226
227
|
* PageIsNew
|
|
227
228
|
* returns true iff page has not been initialized (by PageInit)
|
|
228
229
|
*/
|
|
229
|
-
|
|
230
|
+
static inline bool
|
|
231
|
+
PageIsNew(Page page)
|
|
232
|
+
{
|
|
233
|
+
return ((PageHeader) page)->pd_upper == 0;
|
|
234
|
+
}
|
|
230
235
|
|
|
231
236
|
/*
|
|
232
237
|
* PageGetItemId
|
|
233
238
|
* Returns an item identifier of a page.
|
|
234
239
|
*/
|
|
235
|
-
|
|
236
|
-
|
|
240
|
+
static inline ItemId
|
|
241
|
+
PageGetItemId(Page page, OffsetNumber offsetNumber)
|
|
242
|
+
{
|
|
243
|
+
return &((PageHeader) page)->pd_linp[offsetNumber - 1];
|
|
244
|
+
}
|
|
237
245
|
|
|
238
246
|
/*
|
|
239
247
|
* PageGetContents
|
|
@@ -243,20 +251,17 @@ typedef PageHeaderData *PageHeader;
|
|
|
243
251
|
* Now it is. Beware of old code that might think the offset to the contents
|
|
244
252
|
* is just SizeOfPageHeaderData rather than MAXALIGN(SizeOfPageHeaderData).
|
|
245
253
|
*/
|
|
246
|
-
|
|
247
|
-
|
|
254
|
+
static inline char *
|
|
255
|
+
PageGetContents(Page page)
|
|
256
|
+
{
|
|
257
|
+
return (char *) page + MAXALIGN(SizeOfPageHeaderData);
|
|
258
|
+
}
|
|
248
259
|
|
|
249
260
|
/* ----------------
|
|
250
|
-
*
|
|
261
|
+
* functions to access page size info
|
|
251
262
|
* ----------------
|
|
252
263
|
*/
|
|
253
264
|
|
|
254
|
-
/*
|
|
255
|
-
* PageSizeIsValid
|
|
256
|
-
* True iff the page size is valid.
|
|
257
|
-
*/
|
|
258
|
-
#define PageSizeIsValid(pageSize) ((pageSize) == BLCKSZ)
|
|
259
|
-
|
|
260
265
|
/*
|
|
261
266
|
* PageGetPageSize
|
|
262
267
|
* Returns the page size of a page.
|
|
@@ -265,15 +270,21 @@ typedef PageHeaderData *PageHeader;
|
|
|
265
270
|
* BufferGetPageSize, which can be called on an unformatted page).
|
|
266
271
|
* however, it can be called on a page that is not stored in a buffer.
|
|
267
272
|
*/
|
|
268
|
-
|
|
269
|
-
|
|
273
|
+
static inline Size
|
|
274
|
+
PageGetPageSize(Page page)
|
|
275
|
+
{
|
|
276
|
+
return (Size) (((PageHeader) page)->pd_pagesize_version & (uint16) 0xFF00);
|
|
277
|
+
}
|
|
270
278
|
|
|
271
279
|
/*
|
|
272
280
|
* PageGetPageLayoutVersion
|
|
273
281
|
* Returns the page layout version of a page.
|
|
274
282
|
*/
|
|
275
|
-
|
|
276
|
-
|
|
283
|
+
static inline uint8
|
|
284
|
+
PageGetPageLayoutVersion(Page page)
|
|
285
|
+
{
|
|
286
|
+
return (((PageHeader) page)->pd_pagesize_version & 0x00FF);
|
|
287
|
+
}
|
|
277
288
|
|
|
278
289
|
/*
|
|
279
290
|
* PageSetPageSizeAndVersion
|
|
@@ -282,52 +293,52 @@ typedef PageHeaderData *PageHeader;
|
|
|
282
293
|
* We could support setting these two values separately, but there's
|
|
283
294
|
* no real need for it at the moment.
|
|
284
295
|
*/
|
|
285
|
-
|
|
286
|
-
(
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
((
|
|
290
|
-
|
|
296
|
+
static inline void
|
|
297
|
+
PageSetPageSizeAndVersion(Page page, Size size, uint8 version)
|
|
298
|
+
{
|
|
299
|
+
Assert((size & 0xFF00) == size);
|
|
300
|
+
Assert((version & 0x00FF) == version);
|
|
301
|
+
|
|
302
|
+
((PageHeader) page)->pd_pagesize_version = size | version;
|
|
303
|
+
}
|
|
291
304
|
|
|
292
305
|
/* ----------------
|
|
293
|
-
* page special data
|
|
306
|
+
* page special data functions
|
|
294
307
|
* ----------------
|
|
295
308
|
*/
|
|
296
309
|
/*
|
|
297
310
|
* PageGetSpecialSize
|
|
298
311
|
* Returns size of special space on a page.
|
|
299
312
|
*/
|
|
300
|
-
|
|
301
|
-
|
|
313
|
+
static inline uint16
|
|
314
|
+
PageGetSpecialSize(Page page)
|
|
315
|
+
{
|
|
316
|
+
return (PageGetPageSize(page) - ((PageHeader) page)->pd_special);
|
|
317
|
+
}
|
|
302
318
|
|
|
303
319
|
/*
|
|
304
320
|
* Using assertions, validate that the page special pointer is OK.
|
|
305
321
|
*
|
|
306
322
|
* This is intended to catch use of the pointer before page initialization.
|
|
307
|
-
* It is implemented as a function due to the limitations of the MSVC
|
|
308
|
-
* compiler, which choked on doing all these tests within another macro. We
|
|
309
|
-
* return true so that AssertMacro() can be used while still getting the
|
|
310
|
-
* specifics from the macro failure within this function.
|
|
311
323
|
*/
|
|
312
|
-
static inline
|
|
324
|
+
static inline void
|
|
313
325
|
PageValidateSpecialPointer(Page page)
|
|
314
326
|
{
|
|
315
|
-
Assert(
|
|
316
|
-
Assert(((PageHeader)
|
|
317
|
-
Assert(((PageHeader)
|
|
318
|
-
|
|
319
|
-
return true;
|
|
327
|
+
Assert(page);
|
|
328
|
+
Assert(((PageHeader) page)->pd_special <= BLCKSZ);
|
|
329
|
+
Assert(((PageHeader) page)->pd_special >= SizeOfPageHeaderData);
|
|
320
330
|
}
|
|
321
331
|
|
|
322
332
|
/*
|
|
323
333
|
* PageGetSpecialPointer
|
|
324
334
|
* Returns pointer to special space on a page.
|
|
325
335
|
*/
|
|
326
|
-
|
|
327
|
-
(
|
|
328
|
-
|
|
329
|
-
(
|
|
330
|
-
)
|
|
336
|
+
static inline char *
|
|
337
|
+
PageGetSpecialPointer(Page page)
|
|
338
|
+
{
|
|
339
|
+
PageValidateSpecialPointer(page);
|
|
340
|
+
return (char *) page + ((PageHeader) page)->pd_special;
|
|
341
|
+
}
|
|
331
342
|
|
|
332
343
|
/*
|
|
333
344
|
* PageGetItem
|
|
@@ -337,12 +348,14 @@ PageValidateSpecialPointer(Page page)
|
|
|
337
348
|
* This does not change the status of any of the resources passed.
|
|
338
349
|
* The semantics may change in the future.
|
|
339
350
|
*/
|
|
340
|
-
|
|
341
|
-
(
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
(
|
|
345
|
-
|
|
351
|
+
static inline Item
|
|
352
|
+
PageGetItem(Page page, ItemId itemId)
|
|
353
|
+
{
|
|
354
|
+
Assert(page);
|
|
355
|
+
Assert(ItemIdHasStorage(itemId));
|
|
356
|
+
|
|
357
|
+
return (Item) (((char *) page) + ItemIdGetOffset(itemId));
|
|
358
|
+
}
|
|
346
359
|
|
|
347
360
|
/*
|
|
348
361
|
* PageGetMaxOffsetNumber
|
|
@@ -351,50 +364,84 @@ PageValidateSpecialPointer(Page page)
|
|
|
351
364
|
* of items on the page.
|
|
352
365
|
*
|
|
353
366
|
* NOTE: if the page is not initialized (pd_lower == 0), we must
|
|
354
|
-
* return zero to ensure sane behavior.
|
|
355
|
-
* of the argument so that we can ensure this.
|
|
367
|
+
* return zero to ensure sane behavior.
|
|
356
368
|
*/
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
369
|
+
static inline OffsetNumber
|
|
370
|
+
PageGetMaxOffsetNumber(Page page)
|
|
371
|
+
{
|
|
372
|
+
PageHeader pageheader = (PageHeader) page;
|
|
373
|
+
|
|
374
|
+
if (pageheader->pd_lower <= SizeOfPageHeaderData)
|
|
375
|
+
return 0;
|
|
376
|
+
else
|
|
377
|
+
return (pageheader->pd_lower - SizeOfPageHeaderData) / sizeof(ItemIdData);
|
|
378
|
+
}
|
|
361
379
|
|
|
362
380
|
/*
|
|
363
|
-
* Additional
|
|
364
|
-
|
|
381
|
+
* Additional functions for access to page headers.
|
|
382
|
+
*/
|
|
383
|
+
static inline XLogRecPtr
|
|
384
|
+
PageGetLSN(Page page)
|
|
385
|
+
{
|
|
386
|
+
return PageXLogRecPtrGet(((PageHeader) page)->pd_lsn);
|
|
387
|
+
}
|
|
388
|
+
static inline void
|
|
389
|
+
PageSetLSN(Page page, XLogRecPtr lsn)
|
|
390
|
+
{
|
|
391
|
+
PageXLogRecPtrSet(((PageHeader) page)->pd_lsn, lsn);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
static inline bool
|
|
395
|
+
PageHasFreeLinePointers(Page page)
|
|
396
|
+
{
|
|
397
|
+
return ((PageHeader) page)->pd_flags & PD_HAS_FREE_LINES;
|
|
398
|
+
}
|
|
399
|
+
static inline void
|
|
400
|
+
PageSetHasFreeLinePointers(Page page)
|
|
401
|
+
{
|
|
402
|
+
((PageHeader) page)->pd_flags |= PD_HAS_FREE_LINES;
|
|
403
|
+
}
|
|
404
|
+
static inline void
|
|
405
|
+
PageClearHasFreeLinePointers(Page page)
|
|
406
|
+
{
|
|
407
|
+
((PageHeader) page)->pd_flags &= ~PD_HAS_FREE_LINES;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
static inline bool
|
|
411
|
+
PageIsFull(Page page)
|
|
412
|
+
{
|
|
413
|
+
return ((PageHeader) page)->pd_flags & PD_PAGE_FULL;
|
|
414
|
+
}
|
|
415
|
+
static inline void
|
|
416
|
+
PageSetFull(Page page)
|
|
417
|
+
{
|
|
418
|
+
((PageHeader) page)->pd_flags |= PD_PAGE_FULL;
|
|
419
|
+
}
|
|
420
|
+
static inline void
|
|
421
|
+
PageClearFull(Page page)
|
|
422
|
+
{
|
|
423
|
+
((PageHeader) page)->pd_flags &= ~PD_PAGE_FULL;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
static inline bool
|
|
427
|
+
PageIsAllVisible(Page page)
|
|
428
|
+
{
|
|
429
|
+
return ((PageHeader) page)->pd_flags & PD_ALL_VISIBLE;
|
|
430
|
+
}
|
|
431
|
+
static inline void
|
|
432
|
+
PageSetAllVisible(Page page)
|
|
433
|
+
{
|
|
434
|
+
((PageHeader) page)->pd_flags |= PD_ALL_VISIBLE;
|
|
435
|
+
}
|
|
436
|
+
static inline void
|
|
437
|
+
PageClearAllVisible(Page page)
|
|
438
|
+
{
|
|
439
|
+
((PageHeader) page)->pd_flags &= ~PD_ALL_VISIBLE;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
/*
|
|
443
|
+
* These two require "access/transam.h", so left as macros.
|
|
365
444
|
*/
|
|
366
|
-
#define PageGetLSN(page) \
|
|
367
|
-
PageXLogRecPtrGet(((PageHeader) (page))->pd_lsn)
|
|
368
|
-
#define PageSetLSN(page, lsn) \
|
|
369
|
-
PageXLogRecPtrSet(((PageHeader) (page))->pd_lsn, lsn)
|
|
370
|
-
|
|
371
|
-
#define PageHasFreeLinePointers(page) \
|
|
372
|
-
(((PageHeader) (page))->pd_flags & PD_HAS_FREE_LINES)
|
|
373
|
-
#define PageSetHasFreeLinePointers(page) \
|
|
374
|
-
(((PageHeader) (page))->pd_flags |= PD_HAS_FREE_LINES)
|
|
375
|
-
#define PageClearHasFreeLinePointers(page) \
|
|
376
|
-
(((PageHeader) (page))->pd_flags &= ~PD_HAS_FREE_LINES)
|
|
377
|
-
|
|
378
|
-
#define PageIsFull(page) \
|
|
379
|
-
(((PageHeader) (page))->pd_flags & PD_PAGE_FULL)
|
|
380
|
-
#define PageSetFull(page) \
|
|
381
|
-
(((PageHeader) (page))->pd_flags |= PD_PAGE_FULL)
|
|
382
|
-
#define PageClearFull(page) \
|
|
383
|
-
(((PageHeader) (page))->pd_flags &= ~PD_PAGE_FULL)
|
|
384
|
-
|
|
385
|
-
#define PageIsAllVisible(page) \
|
|
386
|
-
(((PageHeader) (page))->pd_flags & PD_ALL_VISIBLE)
|
|
387
|
-
#define PageSetAllVisible(page) \
|
|
388
|
-
(((PageHeader) (page))->pd_flags |= PD_ALL_VISIBLE)
|
|
389
|
-
#define PageClearAllVisible(page) \
|
|
390
|
-
(((PageHeader) (page))->pd_flags &= ~PD_ALL_VISIBLE)
|
|
391
|
-
|
|
392
|
-
#define PageIsPrunable(page, oldestxmin) \
|
|
393
|
-
( \
|
|
394
|
-
AssertMacro(TransactionIdIsNormal(oldestxmin)), \
|
|
395
|
-
TransactionIdIsValid(((PageHeader) (page))->pd_prune_xid) && \
|
|
396
|
-
TransactionIdPrecedes(((PageHeader) (page))->pd_prune_xid, oldestxmin) \
|
|
397
|
-
)
|
|
398
445
|
#define PageSetPrunable(page, xid) \
|
|
399
446
|
do { \
|
|
400
447
|
Assert(TransactionIdIsNormal(xid)); \
|
|
@@ -424,6 +471,10 @@ do { \
|
|
|
424
471
|
((overwrite) ? PAI_OVERWRITE : 0) | \
|
|
425
472
|
((is_heap) ? PAI_IS_HEAP : 0))
|
|
426
473
|
|
|
474
|
+
#define PageIsVerified(page, blkno) \
|
|
475
|
+
PageIsVerifiedExtended(page, blkno, \
|
|
476
|
+
PIV_LOG_WARNING | PIV_REPORT_STAT)
|
|
477
|
+
|
|
427
478
|
/*
|
|
428
479
|
* Check that BLCKSZ is a multiple of sizeof(size_t). In
|
|
429
480
|
* PageIsVerifiedExtended(), it is much faster to check if a page is
|
|
@@ -435,7 +486,6 @@ StaticAssertDecl(BLCKSZ == ((BLCKSZ / sizeof(size_t)) * sizeof(size_t)),
|
|
|
435
486
|
"BLCKSZ has to be a multiple of sizeof(size_t)");
|
|
436
487
|
|
|
437
488
|
extern void PageInit(Page page, Size pageSize, Size specialSize);
|
|
438
|
-
extern bool PageIsVerified(Page page, BlockNumber blkno);
|
|
439
489
|
extern bool PageIsVerifiedExtended(Page page, BlockNumber blkno, int flags);
|
|
440
490
|
extern OffsetNumber PageAddItemExtended(Page page, Item item, Size size,
|
|
441
491
|
OffsetNumber offsetNumber, int flags);
|
|
@@ -444,13 +494,14 @@ extern Page PageGetTempPageCopy(Page page);
|
|
|
444
494
|
extern Page PageGetTempPageCopySpecial(Page page);
|
|
445
495
|
extern void PageRestoreTempPage(Page tempPage, Page oldPage);
|
|
446
496
|
extern void PageRepairFragmentation(Page page);
|
|
497
|
+
extern void PageTruncateLinePointerArray(Page page);
|
|
447
498
|
extern Size PageGetFreeSpace(Page page);
|
|
448
499
|
extern Size PageGetFreeSpaceForMultipleTuples(Page page, int ntups);
|
|
449
500
|
extern Size PageGetExactFreeSpace(Page page);
|
|
450
501
|
extern Size PageGetHeapFreeSpace(Page page);
|
|
451
|
-
extern void PageIndexTupleDelete(Page page, OffsetNumber
|
|
502
|
+
extern void PageIndexTupleDelete(Page page, OffsetNumber offnum);
|
|
452
503
|
extern void PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems);
|
|
453
|
-
extern void PageIndexTupleDeleteNoCompact(Page page, OffsetNumber
|
|
504
|
+
extern void PageIndexTupleDeleteNoCompact(Page page, OffsetNumber offnum);
|
|
454
505
|
extern bool PageIndexTupleOverwrite(Page page, OffsetNumber offnum,
|
|
455
506
|
Item newtup, Size newsize);
|
|
456
507
|
extern char *PageSetChecksumCopy(Page page, BlockNumber blkno);
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* can be canceled prior to the fulfillment of the condition) and do not
|
|
13
13
|
* use pointers internally (so that they are safe to use within DSMs).
|
|
14
14
|
*
|
|
15
|
-
* Portions Copyright (c) 1996-
|
|
15
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
16
16
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
17
17
|
*
|
|
18
18
|
* src/include/storage/condition_variable.h
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
#define CONDITION_VARIABLE_H
|
|
24
24
|
|
|
25
25
|
#include "storage/proclist_types.h"
|
|
26
|
-
#include "storage/
|
|
26
|
+
#include "storage/spin.h"
|
|
27
27
|
|
|
28
28
|
typedef struct
|
|
29
29
|
{
|
|
@@ -31,6 +31,17 @@ typedef struct
|
|
|
31
31
|
proclist_head wakeup; /* list of wake-able processes */
|
|
32
32
|
} ConditionVariable;
|
|
33
33
|
|
|
34
|
+
/*
|
|
35
|
+
* Pad a condition variable to a power-of-two size so that an array of
|
|
36
|
+
* condition variables does not cross a cache line boundary.
|
|
37
|
+
*/
|
|
38
|
+
#define CV_MINIMAL_SIZE (sizeof(ConditionVariable) <= 16 ? 16 : 32)
|
|
39
|
+
typedef union ConditionVariableMinimallyPadded
|
|
40
|
+
{
|
|
41
|
+
ConditionVariable cv;
|
|
42
|
+
char pad[CV_MINIMAL_SIZE];
|
|
43
|
+
} ConditionVariableMinimallyPadded;
|
|
44
|
+
|
|
34
45
|
/* Initialize a condition variable. */
|
|
35
46
|
extern void ConditionVariableInit(ConditionVariable *cv);
|
|
36
47
|
|
|
@@ -45,7 +56,7 @@ extern void ConditionVariableInit(ConditionVariable *cv);
|
|
|
45
56
|
extern void ConditionVariableSleep(ConditionVariable *cv, uint32 wait_event_info);
|
|
46
57
|
extern bool ConditionVariableTimedSleep(ConditionVariable *cv, long timeout,
|
|
47
58
|
uint32 wait_event_info);
|
|
48
|
-
extern
|
|
59
|
+
extern bool ConditionVariableCancelSleep(void);
|
|
49
60
|
|
|
50
61
|
/*
|
|
51
62
|
* Optionally, ConditionVariablePrepareToSleep can be called before entering
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* dsm.h
|
|
4
4
|
* manage dynamic shared memory segments
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/storage/dsm.h
|
|
@@ -19,9 +19,6 @@ typedef struct dsm_segment dsm_segment;
|
|
|
19
19
|
|
|
20
20
|
#define DSM_CREATE_NULL_IF_MAXSEGMENTS 0x0001
|
|
21
21
|
|
|
22
|
-
/* A sentinel value for an invalid DSM handle. */
|
|
23
|
-
#define DSM_HANDLE_INVALID 0
|
|
24
|
-
|
|
25
22
|
/* Startup and shutdown functions. */
|
|
26
23
|
struct PGShmemHeader; /* avoid including pg_shmem.h */
|
|
27
24
|
extern void dsm_cleanup_using_control_segment(dsm_handle old_control_handle);
|
|
@@ -29,6 +26,9 @@ extern void dsm_postmaster_startup(struct PGShmemHeader *);
|
|
|
29
26
|
extern void dsm_backend_shutdown(void);
|
|
30
27
|
extern void dsm_detach_all(void);
|
|
31
28
|
|
|
29
|
+
extern size_t dsm_estimate_size(void);
|
|
30
|
+
extern void dsm_shmem_init(void);
|
|
31
|
+
|
|
32
32
|
#ifdef EXEC_BACKEND
|
|
33
33
|
extern void dsm_set_control_handle(dsm_handle h);
|
|
34
34
|
#endif
|
|
@@ -42,8 +42,8 @@ extern void dsm_detach(dsm_segment *seg);
|
|
|
42
42
|
extern void dsm_pin_mapping(dsm_segment *seg);
|
|
43
43
|
extern void dsm_unpin_mapping(dsm_segment *seg);
|
|
44
44
|
extern void dsm_pin_segment(dsm_segment *seg);
|
|
45
|
-
extern void dsm_unpin_segment(dsm_handle
|
|
46
|
-
extern dsm_segment *dsm_find_mapping(dsm_handle
|
|
45
|
+
extern void dsm_unpin_segment(dsm_handle handle);
|
|
46
|
+
extern dsm_segment *dsm_find_mapping(dsm_handle handle);
|
|
47
47
|
|
|
48
48
|
/* Informational functions. */
|
|
49
49
|
extern void *dsm_segment_address(dsm_segment *seg);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* dsm_impl.h
|
|
4
4
|
* low-level dynamic shared memory primitives
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/storage/dsm_impl.h
|
|
@@ -39,7 +39,8 @@
|
|
|
39
39
|
#endif
|
|
40
40
|
|
|
41
41
|
/* GUC. */
|
|
42
|
-
extern int
|
|
42
|
+
extern PGDLLIMPORT int dynamic_shared_memory_type;
|
|
43
|
+
extern PGDLLIMPORT int min_dynamic_shared_memory;
|
|
43
44
|
|
|
44
45
|
/*
|
|
45
46
|
* Directory for on-disk state.
|
|
@@ -53,6 +54,9 @@ extern int dynamic_shared_memory_type;
|
|
|
53
54
|
/* A "name" for a dynamic shared memory segment. */
|
|
54
55
|
typedef uint32 dsm_handle;
|
|
55
56
|
|
|
57
|
+
/* Sentinel value to use for invalid DSM handles. */
|
|
58
|
+
#define DSM_HANDLE_INVALID ((dsm_handle) 0)
|
|
59
|
+
|
|
56
60
|
/* All the shared-memory operations we know about. */
|
|
57
61
|
typedef enum
|
|
58
62
|
{
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Virtual file descriptor definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/storage/fd.h
|
|
@@ -44,19 +44,32 @@
|
|
|
44
44
|
#define FD_H
|
|
45
45
|
|
|
46
46
|
#include <dirent.h>
|
|
47
|
+
#include <fcntl.h>
|
|
47
48
|
|
|
49
|
+
typedef enum RecoveryInitSyncMethod
|
|
50
|
+
{
|
|
51
|
+
RECOVERY_INIT_SYNC_METHOD_FSYNC,
|
|
52
|
+
RECOVERY_INIT_SYNC_METHOD_SYNCFS
|
|
53
|
+
} RecoveryInitSyncMethod;
|
|
48
54
|
|
|
49
55
|
typedef int File;
|
|
50
56
|
|
|
51
57
|
|
|
58
|
+
#define IO_DIRECT_DATA 0x01
|
|
59
|
+
#define IO_DIRECT_WAL 0x02
|
|
60
|
+
#define IO_DIRECT_WAL_INIT 0x04
|
|
61
|
+
|
|
62
|
+
|
|
52
63
|
/* GUC parameter */
|
|
53
64
|
extern PGDLLIMPORT int max_files_per_process;
|
|
54
65
|
extern PGDLLIMPORT bool data_sync_retry;
|
|
66
|
+
extern PGDLLIMPORT int recovery_init_sync_method;
|
|
67
|
+
extern PGDLLIMPORT int io_direct_flags;
|
|
55
68
|
|
|
56
69
|
/*
|
|
57
70
|
* This is private to fd.c, but exported for save/restore_backend_variables()
|
|
58
71
|
*/
|
|
59
|
-
extern int
|
|
72
|
+
extern PGDLLIMPORT int max_safe_fds;
|
|
60
73
|
|
|
61
74
|
/*
|
|
62
75
|
* On Windows, we have to interpret EACCES as possibly meaning the same as
|
|
@@ -71,6 +84,23 @@ extern int max_safe_fds;
|
|
|
71
84
|
#define FILE_POSSIBLY_DELETED(err) ((err) == ENOENT || (err) == EACCES)
|
|
72
85
|
#endif
|
|
73
86
|
|
|
87
|
+
/*
|
|
88
|
+
* O_DIRECT is not standard, but almost every Unix has it. We translate it
|
|
89
|
+
* to the appropriate Windows flag in src/port/open.c. We simulate it with
|
|
90
|
+
* fcntl(F_NOCACHE) on macOS inside fd.c's open() wrapper. We use the name
|
|
91
|
+
* PG_O_DIRECT rather than defining O_DIRECT in that case (probably not a good
|
|
92
|
+
* idea on a Unix). We can only use it if the compiler will correctly align
|
|
93
|
+
* PGIOAlignedBlock for us, though.
|
|
94
|
+
*/
|
|
95
|
+
#if defined(O_DIRECT) && defined(pg_attribute_aligned)
|
|
96
|
+
#define PG_O_DIRECT O_DIRECT
|
|
97
|
+
#elif defined(F_NOCACHE)
|
|
98
|
+
#define PG_O_DIRECT 0x80000000
|
|
99
|
+
#define PG_O_DIRECT_USE_F_NOCACHE
|
|
100
|
+
#else
|
|
101
|
+
#define PG_O_DIRECT 0
|
|
102
|
+
#endif
|
|
103
|
+
|
|
74
104
|
/*
|
|
75
105
|
* prototypes for functions in fd.c
|
|
76
106
|
*/
|
|
@@ -80,10 +110,13 @@ extern File PathNameOpenFile(const char *fileName, int fileFlags);
|
|
|
80
110
|
extern File PathNameOpenFilePerm(const char *fileName, int fileFlags, mode_t fileMode);
|
|
81
111
|
extern File OpenTemporaryFile(bool interXact);
|
|
82
112
|
extern void FileClose(File file);
|
|
83
|
-
extern int FilePrefetch(File file, off_t offset,
|
|
84
|
-
extern int FileRead(File file,
|
|
85
|
-
extern int FileWrite(File file,
|
|
113
|
+
extern int FilePrefetch(File file, off_t offset, off_t amount, uint32 wait_event_info);
|
|
114
|
+
extern int FileRead(File file, void *buffer, size_t amount, off_t offset, uint32 wait_event_info);
|
|
115
|
+
extern int FileWrite(File file, const void *buffer, size_t amount, off_t offset, uint32 wait_event_info);
|
|
86
116
|
extern int FileSync(File file, uint32 wait_event_info);
|
|
117
|
+
extern int FileZero(File file, off_t offset, off_t amount, uint32 wait_event_info);
|
|
118
|
+
extern int FileFallocate(File file, off_t offset, off_t amount, uint32 wait_event_info);
|
|
119
|
+
|
|
87
120
|
extern off_t FileSize(File file);
|
|
88
121
|
extern int FileTruncate(File file, off_t offset, uint32 wait_event_info);
|
|
89
122
|
extern void FileWriteback(File file, off_t offset, off_t nbytes, uint32 wait_event_info);
|
|
@@ -93,11 +126,11 @@ extern int FileGetRawFlags(File file);
|
|
|
93
126
|
extern mode_t FileGetRawMode(File file);
|
|
94
127
|
|
|
95
128
|
/* Operations used for sharing named temporary files */
|
|
96
|
-
extern File PathNameCreateTemporaryFile(const char *
|
|
97
|
-
extern File PathNameOpenTemporaryFile(const char *
|
|
98
|
-
extern bool PathNameDeleteTemporaryFile(const char *
|
|
99
|
-
extern void PathNameCreateTemporaryDir(const char *
|
|
100
|
-
extern void PathNameDeleteTemporaryDir(const char *
|
|
129
|
+
extern File PathNameCreateTemporaryFile(const char *path, bool error_on_failure);
|
|
130
|
+
extern File PathNameOpenTemporaryFile(const char *path, int mode);
|
|
131
|
+
extern bool PathNameDeleteTemporaryFile(const char *path, bool error_on_failure);
|
|
132
|
+
extern void PathNameCreateTemporaryDir(const char *basedir, const char *directory);
|
|
133
|
+
extern void PathNameDeleteTemporaryDir(const char *dirname);
|
|
101
134
|
extern void TempTablespacePath(char *path, Oid tablespace);
|
|
102
135
|
|
|
103
136
|
/* Operations that allow use of regular stdio --- USE WITH CAUTION */
|
|
@@ -134,6 +167,7 @@ extern int MakePGDirectory(const char *directoryName);
|
|
|
134
167
|
|
|
135
168
|
/* Miscellaneous support routines */
|
|
136
169
|
extern void InitFileAccess(void);
|
|
170
|
+
extern void InitTemporaryFileAccess(void);
|
|
137
171
|
extern void set_max_safe_fds(void);
|
|
138
172
|
extern void closeAllVfds(void);
|
|
139
173
|
extern void SetTempTablespaces(Oid *tableSpaces, int numSpaces);
|
|
@@ -152,12 +186,12 @@ extern int pg_fsync(int fd);
|
|
|
152
186
|
extern int pg_fsync_no_writethrough(int fd);
|
|
153
187
|
extern int pg_fsync_writethrough(int fd);
|
|
154
188
|
extern int pg_fdatasync(int fd);
|
|
155
|
-
extern void pg_flush_data(int fd, off_t offset, off_t
|
|
189
|
+
extern void pg_flush_data(int fd, off_t offset, off_t nbytes);
|
|
190
|
+
extern int pg_truncate(const char *path, off_t length);
|
|
156
191
|
extern void fsync_fname(const char *fname, bool isdir);
|
|
157
192
|
extern int fsync_fname_ext(const char *fname, bool isdir, bool ignore_perm, int elevel);
|
|
158
|
-
extern int durable_rename(const char *oldfile, const char *newfile, int
|
|
159
|
-
extern int durable_unlink(const char *fname, int
|
|
160
|
-
extern int durable_rename_excl(const char *oldfile, const char *newfile, int loglevel);
|
|
193
|
+
extern int durable_rename(const char *oldfile, const char *newfile, int elevel);
|
|
194
|
+
extern int durable_unlink(const char *fname, int elevel);
|
|
161
195
|
extern void SyncDataDirectory(void);
|
|
162
196
|
extern int data_sync_elevel(int elevel);
|
|
163
197
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* fileset.h
|
|
4
|
+
* Management of named temporary files.
|
|
5
|
+
*
|
|
6
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
7
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
|
+
*
|
|
9
|
+
* src/include/storage/fileset.h
|
|
10
|
+
*
|
|
11
|
+
*-------------------------------------------------------------------------
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef FILESET_H
|
|
15
|
+
#define FILESET_H
|
|
16
|
+
|
|
17
|
+
#include "storage/fd.h"
|
|
18
|
+
|
|
19
|
+
/*
|
|
20
|
+
* A set of temporary files.
|
|
21
|
+
*/
|
|
22
|
+
typedef struct FileSet
|
|
23
|
+
{
|
|
24
|
+
pid_t creator_pid; /* PID of the creating process */
|
|
25
|
+
uint32 number; /* per-PID identifier */
|
|
26
|
+
int ntablespaces; /* number of tablespaces to use */
|
|
27
|
+
Oid tablespaces[8]; /* OIDs of tablespaces to use. Assumes that
|
|
28
|
+
* it's rare that there more than temp
|
|
29
|
+
* tablespaces. */
|
|
30
|
+
} FileSet;
|
|
31
|
+
|
|
32
|
+
extern void FileSetInit(FileSet *fileset);
|
|
33
|
+
extern File FileSetCreate(FileSet *fileset, const char *name);
|
|
34
|
+
extern File FileSetOpen(FileSet *fileset, const char *name,
|
|
35
|
+
int mode);
|
|
36
|
+
extern bool FileSetDelete(FileSet *fileset, const char *name,
|
|
37
|
+
bool error_on_failure);
|
|
38
|
+
extern void FileSetDeleteAll(FileSet *fileset);
|
|
39
|
+
|
|
40
|
+
#endif
|