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
|
* POSTGRES disk block 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/block.h
|
|
@@ -59,7 +59,7 @@ typedef struct BlockIdData
|
|
|
59
59
|
typedef BlockIdData *BlockId; /* block identifier */
|
|
60
60
|
|
|
61
61
|
/* ----------------
|
|
62
|
-
* support
|
|
62
|
+
* support functions
|
|
63
63
|
* ----------------
|
|
64
64
|
*/
|
|
65
65
|
|
|
@@ -67,55 +67,42 @@ typedef BlockIdData *BlockId; /* block identifier */
|
|
|
67
67
|
* BlockNumberIsValid
|
|
68
68
|
* True iff blockNumber is valid.
|
|
69
69
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
* True iff the block identifier is valid.
|
|
76
|
-
*/
|
|
77
|
-
#define BlockIdIsValid(blockId) \
|
|
78
|
-
((bool) PointerIsValid(blockId))
|
|
70
|
+
static inline bool
|
|
71
|
+
BlockNumberIsValid(BlockNumber blockNumber)
|
|
72
|
+
{
|
|
73
|
+
return blockNumber != InvalidBlockNumber;
|
|
74
|
+
}
|
|
79
75
|
|
|
80
76
|
/*
|
|
81
77
|
* BlockIdSet
|
|
82
78
|
* Sets a block identifier to the specified value.
|
|
83
79
|
*/
|
|
84
|
-
|
|
85
|
-
(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
/*
|
|
92
|
-
* BlockIdCopy
|
|
93
|
-
* Copy a block identifier.
|
|
94
|
-
*/
|
|
95
|
-
#define BlockIdCopy(toBlockId, fromBlockId) \
|
|
96
|
-
( \
|
|
97
|
-
AssertMacro(PointerIsValid(toBlockId)), \
|
|
98
|
-
AssertMacro(PointerIsValid(fromBlockId)), \
|
|
99
|
-
(toBlockId)->bi_hi = (fromBlockId)->bi_hi, \
|
|
100
|
-
(toBlockId)->bi_lo = (fromBlockId)->bi_lo \
|
|
101
|
-
)
|
|
80
|
+
static inline void
|
|
81
|
+
BlockIdSet(BlockIdData *blockId, BlockNumber blockNumber)
|
|
82
|
+
{
|
|
83
|
+
blockId->bi_hi = blockNumber >> 16;
|
|
84
|
+
blockId->bi_lo = blockNumber & 0xffff;
|
|
85
|
+
}
|
|
102
86
|
|
|
103
87
|
/*
|
|
104
88
|
* BlockIdEquals
|
|
105
89
|
* Check for block number equality.
|
|
106
90
|
*/
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
91
|
+
static inline bool
|
|
92
|
+
BlockIdEquals(const BlockIdData *blockId1, const BlockIdData *blockId2)
|
|
93
|
+
{
|
|
94
|
+
return (blockId1->bi_hi == blockId2->bi_hi &&
|
|
95
|
+
blockId1->bi_lo == blockId2->bi_lo);
|
|
96
|
+
}
|
|
110
97
|
|
|
111
98
|
/*
|
|
112
99
|
* BlockIdGetBlockNumber
|
|
113
100
|
* Retrieve the block number from a block identifier.
|
|
114
101
|
*/
|
|
115
|
-
|
|
116
|
-
(
|
|
117
|
-
|
|
118
|
-
(BlockNumber)
|
|
119
|
-
|
|
102
|
+
static inline BlockNumber
|
|
103
|
+
BlockIdGetBlockNumber(const BlockIdData *blockId)
|
|
104
|
+
{
|
|
105
|
+
return (((BlockNumber) blockId->bi_hi) << 16) | ((BlockNumber) blockId->bi_lo);
|
|
106
|
+
}
|
|
120
107
|
|
|
121
108
|
#endif /* BLOCK_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Basic buffer manager data types.
|
|
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/buf.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES buffer manager 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/bufmgr.h
|
|
@@ -17,13 +17,18 @@
|
|
|
17
17
|
#include "storage/block.h"
|
|
18
18
|
#include "storage/buf.h"
|
|
19
19
|
#include "storage/bufpage.h"
|
|
20
|
-
#include "storage/
|
|
20
|
+
#include "storage/relfilelocator.h"
|
|
21
21
|
#include "utils/relcache.h"
|
|
22
22
|
#include "utils/snapmgr.h"
|
|
23
23
|
|
|
24
24
|
typedef void *Block;
|
|
25
25
|
|
|
26
|
-
/*
|
|
26
|
+
/*
|
|
27
|
+
* Possible arguments for GetAccessStrategy().
|
|
28
|
+
*
|
|
29
|
+
* If adding a new BufferAccessStrategyType, also add a new IOContext so
|
|
30
|
+
* IO statistics using this strategy are tracked.
|
|
31
|
+
*/
|
|
27
32
|
typedef enum BufferAccessStrategyType
|
|
28
33
|
{
|
|
29
34
|
BAS_NORMAL, /* Normal random access */
|
|
@@ -55,6 +60,53 @@ typedef struct PrefetchBufferResult
|
|
|
55
60
|
bool initiated_io; /* If true, a miss resulting in async I/O */
|
|
56
61
|
} PrefetchBufferResult;
|
|
57
62
|
|
|
63
|
+
/*
|
|
64
|
+
* Flags influencing the behaviour of ExtendBufferedRel*
|
|
65
|
+
*/
|
|
66
|
+
typedef enum ExtendBufferedFlags
|
|
67
|
+
{
|
|
68
|
+
/*
|
|
69
|
+
* Don't acquire extension lock. This is safe only if the relation isn't
|
|
70
|
+
* shared, an access exclusive lock is held or if this is the startup
|
|
71
|
+
* process.
|
|
72
|
+
*/
|
|
73
|
+
EB_SKIP_EXTENSION_LOCK = (1 << 0),
|
|
74
|
+
|
|
75
|
+
/* Is this extension part of recovery? */
|
|
76
|
+
EB_PERFORMING_RECOVERY = (1 << 1),
|
|
77
|
+
|
|
78
|
+
/*
|
|
79
|
+
* Should the fork be created if it does not currently exist? This likely
|
|
80
|
+
* only ever makes sense for relation forks.
|
|
81
|
+
*/
|
|
82
|
+
EB_CREATE_FORK_IF_NEEDED = (1 << 2),
|
|
83
|
+
|
|
84
|
+
/* Should the first (possibly only) return buffer be returned locked? */
|
|
85
|
+
EB_LOCK_FIRST = (1 << 3),
|
|
86
|
+
|
|
87
|
+
/* Should the smgr size cache be cleared? */
|
|
88
|
+
EB_CLEAR_SIZE_CACHE = (1 << 4),
|
|
89
|
+
|
|
90
|
+
/* internal flags follow */
|
|
91
|
+
EB_LOCK_TARGET = (1 << 5),
|
|
92
|
+
} ExtendBufferedFlags;
|
|
93
|
+
|
|
94
|
+
/*
|
|
95
|
+
* Some functions identify relations either by relation or smgr +
|
|
96
|
+
* relpersistence. Used via the BMR_REL()/BMR_SMGR() macros below. This
|
|
97
|
+
* allows us to use the same function for both recovery and normal operation.
|
|
98
|
+
*/
|
|
99
|
+
typedef struct BufferManagerRelation
|
|
100
|
+
{
|
|
101
|
+
Relation rel;
|
|
102
|
+
struct SMgrRelationData *smgr;
|
|
103
|
+
char relpersistence;
|
|
104
|
+
} BufferManagerRelation;
|
|
105
|
+
|
|
106
|
+
#define BMR_REL(p_rel) ((BufferManagerRelation){.rel = p_rel})
|
|
107
|
+
#define BMR_SMGR(p_smgr, p_relpersistence) ((BufferManagerRelation){.smgr = p_smgr, .relpersistence = p_relpersistence})
|
|
108
|
+
|
|
109
|
+
|
|
58
110
|
/* forward declared, to avoid having to expose buf_internals.h here */
|
|
59
111
|
struct WritebackContext;
|
|
60
112
|
|
|
@@ -65,16 +117,25 @@ struct SMgrRelationData;
|
|
|
65
117
|
extern PGDLLIMPORT int NBuffers;
|
|
66
118
|
|
|
67
119
|
/* in bufmgr.c */
|
|
68
|
-
extern bool zero_damaged_pages;
|
|
69
|
-
extern int
|
|
70
|
-
extern double bgwriter_lru_multiplier;
|
|
71
|
-
extern bool track_io_timing;
|
|
72
|
-
|
|
73
|
-
|
|
120
|
+
extern PGDLLIMPORT bool zero_damaged_pages;
|
|
121
|
+
extern PGDLLIMPORT int bgwriter_lru_maxpages;
|
|
122
|
+
extern PGDLLIMPORT double bgwriter_lru_multiplier;
|
|
123
|
+
extern PGDLLIMPORT bool track_io_timing;
|
|
124
|
+
|
|
125
|
+
/* only applicable when prefetching is available */
|
|
126
|
+
#ifdef USE_PREFETCH
|
|
127
|
+
#define DEFAULT_EFFECTIVE_IO_CONCURRENCY 1
|
|
128
|
+
#define DEFAULT_MAINTENANCE_IO_CONCURRENCY 10
|
|
129
|
+
#else
|
|
130
|
+
#define DEFAULT_EFFECTIVE_IO_CONCURRENCY 0
|
|
131
|
+
#define DEFAULT_MAINTENANCE_IO_CONCURRENCY 0
|
|
132
|
+
#endif
|
|
133
|
+
extern PGDLLIMPORT int effective_io_concurrency;
|
|
134
|
+
extern PGDLLIMPORT int maintenance_io_concurrency;
|
|
74
135
|
|
|
75
|
-
extern int
|
|
76
|
-
extern int
|
|
77
|
-
extern int
|
|
136
|
+
extern PGDLLIMPORT int checkpoint_flush_after;
|
|
137
|
+
extern PGDLLIMPORT int backend_flush_after;
|
|
138
|
+
extern PGDLLIMPORT int bgwriter_flush_after;
|
|
78
139
|
|
|
79
140
|
/* in buf_init.c */
|
|
80
141
|
extern PGDLLIMPORT char *BufferBlocks;
|
|
@@ -97,76 +158,6 @@ extern PGDLLIMPORT int32 *LocalRefCount;
|
|
|
97
158
|
#define BUFFER_LOCK_SHARE 1
|
|
98
159
|
#define BUFFER_LOCK_EXCLUSIVE 2
|
|
99
160
|
|
|
100
|
-
/*
|
|
101
|
-
* These routines are beaten on quite heavily, hence the macroization.
|
|
102
|
-
*/
|
|
103
|
-
|
|
104
|
-
/*
|
|
105
|
-
* BufferIsValid
|
|
106
|
-
* True iff the given buffer number is valid (either as a shared
|
|
107
|
-
* or local buffer).
|
|
108
|
-
*
|
|
109
|
-
* Note: For a long time this was defined the same as BufferIsPinned,
|
|
110
|
-
* that is it would say False if you didn't hold a pin on the buffer.
|
|
111
|
-
* I believe this was bogus and served only to mask logic errors.
|
|
112
|
-
* Code should always know whether it has a buffer reference,
|
|
113
|
-
* independently of the pin state.
|
|
114
|
-
*
|
|
115
|
-
* Note: For a further long time this was not quite the inverse of the
|
|
116
|
-
* BufferIsInvalid() macro, in that it also did sanity checks to verify
|
|
117
|
-
* that the buffer number was in range. Most likely, this macro was
|
|
118
|
-
* originally intended only to be used in assertions, but its use has
|
|
119
|
-
* since expanded quite a bit, and the overhead of making those checks
|
|
120
|
-
* even in non-assert-enabled builds can be significant. Thus, we've
|
|
121
|
-
* now demoted the range checks to assertions within the macro itself.
|
|
122
|
-
*/
|
|
123
|
-
#define BufferIsValid(bufnum) \
|
|
124
|
-
( \
|
|
125
|
-
AssertMacro((bufnum) <= NBuffers && (bufnum) >= -NLocBuffer), \
|
|
126
|
-
(bufnum) != InvalidBuffer \
|
|
127
|
-
)
|
|
128
|
-
|
|
129
|
-
/*
|
|
130
|
-
* BufferGetBlock
|
|
131
|
-
* Returns a reference to a disk page image associated with a buffer.
|
|
132
|
-
*
|
|
133
|
-
* Note:
|
|
134
|
-
* Assumes buffer is valid.
|
|
135
|
-
*/
|
|
136
|
-
#define BufferGetBlock(buffer) \
|
|
137
|
-
( \
|
|
138
|
-
AssertMacro(BufferIsValid(buffer)), \
|
|
139
|
-
BufferIsLocal(buffer) ? \
|
|
140
|
-
LocalBufferBlockPointers[-(buffer) - 1] \
|
|
141
|
-
: \
|
|
142
|
-
(Block) (BufferBlocks + ((Size) ((buffer) - 1)) * BLCKSZ) \
|
|
143
|
-
)
|
|
144
|
-
|
|
145
|
-
/*
|
|
146
|
-
* BufferGetPageSize
|
|
147
|
-
* Returns the page size within a buffer.
|
|
148
|
-
*
|
|
149
|
-
* Notes:
|
|
150
|
-
* Assumes buffer is valid.
|
|
151
|
-
*
|
|
152
|
-
* The buffer can be a raw disk block and need not contain a valid
|
|
153
|
-
* (formatted) disk page.
|
|
154
|
-
*/
|
|
155
|
-
/* XXX should dig out of buffer descriptor */
|
|
156
|
-
#define BufferGetPageSize(buffer) \
|
|
157
|
-
( \
|
|
158
|
-
AssertMacro(BufferIsValid(buffer)), \
|
|
159
|
-
(Size)BLCKSZ \
|
|
160
|
-
)
|
|
161
|
-
|
|
162
|
-
/*
|
|
163
|
-
* BufferGetPage
|
|
164
|
-
* Returns the page associated with a buffer.
|
|
165
|
-
*
|
|
166
|
-
* When this is called as part of a scan, there may be a need for a nearby
|
|
167
|
-
* call to TestForOldSnapshot(). See the definition of that for details.
|
|
168
|
-
*/
|
|
169
|
-
#define BufferGetPage(buffer) ((Page)BufferGetBlock(buffer))
|
|
170
161
|
|
|
171
162
|
/*
|
|
172
163
|
* prototypes for functions in bufmgr.c
|
|
@@ -176,23 +167,43 @@ extern PrefetchBufferResult PrefetchSharedBuffer(struct SMgrRelationData *smgr_r
|
|
|
176
167
|
BlockNumber blockNum);
|
|
177
168
|
extern PrefetchBufferResult PrefetchBuffer(Relation reln, ForkNumber forkNum,
|
|
178
169
|
BlockNumber blockNum);
|
|
170
|
+
extern bool ReadRecentBuffer(RelFileLocator rlocator, ForkNumber forkNum,
|
|
171
|
+
BlockNumber blockNum, Buffer recent_buffer);
|
|
179
172
|
extern Buffer ReadBuffer(Relation reln, BlockNumber blockNum);
|
|
180
173
|
extern Buffer ReadBufferExtended(Relation reln, ForkNumber forkNum,
|
|
181
174
|
BlockNumber blockNum, ReadBufferMode mode,
|
|
182
175
|
BufferAccessStrategy strategy);
|
|
183
|
-
extern Buffer ReadBufferWithoutRelcache(
|
|
176
|
+
extern Buffer ReadBufferWithoutRelcache(RelFileLocator rlocator,
|
|
184
177
|
ForkNumber forkNum, BlockNumber blockNum,
|
|
185
|
-
ReadBufferMode mode, BufferAccessStrategy strategy
|
|
178
|
+
ReadBufferMode mode, BufferAccessStrategy strategy,
|
|
179
|
+
bool permanent);
|
|
186
180
|
extern void ReleaseBuffer(Buffer buffer);
|
|
187
181
|
extern void UnlockReleaseBuffer(Buffer buffer);
|
|
188
182
|
extern void MarkBufferDirty(Buffer buffer);
|
|
189
183
|
extern void IncrBufferRefCount(Buffer buffer);
|
|
184
|
+
extern void CheckBufferIsPinnedOnce(Buffer buffer);
|
|
190
185
|
extern Buffer ReleaseAndReadBuffer(Buffer buffer, Relation relation,
|
|
191
186
|
BlockNumber blockNum);
|
|
192
187
|
|
|
193
|
-
extern
|
|
188
|
+
extern Buffer ExtendBufferedRel(BufferManagerRelation bmr,
|
|
189
|
+
ForkNumber forkNum,
|
|
190
|
+
BufferAccessStrategy strategy,
|
|
191
|
+
uint32 flags);
|
|
192
|
+
extern BlockNumber ExtendBufferedRelBy(BufferManagerRelation bmr,
|
|
193
|
+
ForkNumber fork,
|
|
194
|
+
BufferAccessStrategy strategy,
|
|
195
|
+
uint32 flags,
|
|
196
|
+
uint32 extend_by,
|
|
197
|
+
Buffer *buffers,
|
|
198
|
+
uint32 *extended_by);
|
|
199
|
+
extern Buffer ExtendBufferedRelTo(BufferManagerRelation bmr,
|
|
200
|
+
ForkNumber fork,
|
|
201
|
+
BufferAccessStrategy strategy,
|
|
202
|
+
uint32 flags,
|
|
203
|
+
BlockNumber extend_to,
|
|
204
|
+
ReadBufferMode mode);
|
|
205
|
+
|
|
194
206
|
extern void InitBufferPoolAccess(void);
|
|
195
|
-
extern void InitBufferPoolBackend(void);
|
|
196
207
|
extern void AtEOXact_Buffers(bool isCommit);
|
|
197
208
|
extern void PrintBufferLeakWarning(Buffer buffer);
|
|
198
209
|
extern void CheckPointBuffers(int flags);
|
|
@@ -202,10 +213,15 @@ extern BlockNumber RelationGetNumberOfBlocksInFork(Relation relation,
|
|
|
202
213
|
extern void FlushOneBuffer(Buffer buffer);
|
|
203
214
|
extern void FlushRelationBuffers(Relation rel);
|
|
204
215
|
extern void FlushRelationsAllBuffers(struct SMgrRelationData **smgrs, int nrels);
|
|
216
|
+
extern void CreateAndCopyRelationData(RelFileLocator src_rlocator,
|
|
217
|
+
RelFileLocator dst_rlocator,
|
|
218
|
+
bool permanent);
|
|
205
219
|
extern void FlushDatabaseBuffers(Oid dbid);
|
|
206
|
-
extern void
|
|
207
|
-
|
|
208
|
-
|
|
220
|
+
extern void DropRelationBuffers(struct SMgrRelationData *smgr_reln,
|
|
221
|
+
ForkNumber *forkNum,
|
|
222
|
+
int nforks, BlockNumber *firstDelBlock);
|
|
223
|
+
extern void DropRelationsAllBuffers(struct SMgrRelationData **smgr_reln,
|
|
224
|
+
int nlocators);
|
|
209
225
|
extern void DropDatabaseBuffers(Oid dbid);
|
|
210
226
|
|
|
211
227
|
#define RelationGetNumberOfBlocks(reln) \
|
|
@@ -217,8 +233,7 @@ extern XLogRecPtr BufferGetLSNAtomic(Buffer buffer);
|
|
|
217
233
|
#ifdef NOT_USED
|
|
218
234
|
extern void PrintPinnedBufs(void);
|
|
219
235
|
#endif
|
|
220
|
-
extern
|
|
221
|
-
extern void BufferGetTag(Buffer buffer, RelFileNode *rnode,
|
|
236
|
+
extern void BufferGetTag(Buffer buffer, RelFileLocator *rlocator,
|
|
222
237
|
ForkNumber *forknum, BlockNumber *blknum);
|
|
223
238
|
|
|
224
239
|
extern void MarkBufferDirtyHint(Buffer buffer, bool buffer_std);
|
|
@@ -231,17 +246,26 @@ extern bool ConditionalLockBufferForCleanup(Buffer buffer);
|
|
|
231
246
|
extern bool IsBufferCleanupOK(Buffer buffer);
|
|
232
247
|
extern bool HoldingBufferPinThatDelaysRecovery(void);
|
|
233
248
|
|
|
234
|
-
extern void AbortBufferIO(
|
|
249
|
+
extern void AbortBufferIO(Buffer buffer);
|
|
235
250
|
|
|
236
|
-
extern void BufmgrCommit(void);
|
|
237
251
|
extern bool BgBufferSync(struct WritebackContext *wb_context);
|
|
238
252
|
|
|
239
|
-
extern void AtProcExit_LocalBuffers(void);
|
|
240
|
-
|
|
241
253
|
extern void TestForOldSnapshot_impl(Snapshot snapshot, Relation relation);
|
|
242
254
|
|
|
255
|
+
/* in buf_init.c */
|
|
256
|
+
extern void InitBufferPool(void);
|
|
257
|
+
extern Size BufferShmemSize(void);
|
|
258
|
+
|
|
259
|
+
/* in localbuf.c */
|
|
260
|
+
extern void AtProcExit_LocalBuffers(void);
|
|
261
|
+
|
|
243
262
|
/* in freelist.c */
|
|
263
|
+
|
|
244
264
|
extern BufferAccessStrategy GetAccessStrategy(BufferAccessStrategyType btype);
|
|
265
|
+
extern BufferAccessStrategy GetAccessStrategyWithSize(BufferAccessStrategyType btype,
|
|
266
|
+
int ring_size_kb);
|
|
267
|
+
extern int GetAccessStrategyBufferCount(BufferAccessStrategy strategy);
|
|
268
|
+
|
|
245
269
|
extern void FreeAccessStrategy(BufferAccessStrategy strategy);
|
|
246
270
|
|
|
247
271
|
|
|
@@ -256,6 +280,83 @@ extern void FreeAccessStrategy(BufferAccessStrategy strategy);
|
|
|
256
280
|
|
|
257
281
|
#ifndef FRONTEND
|
|
258
282
|
|
|
283
|
+
/*
|
|
284
|
+
* BufferIsValid
|
|
285
|
+
* True iff the given buffer number is valid (either as a shared
|
|
286
|
+
* or local buffer).
|
|
287
|
+
*
|
|
288
|
+
* Note: For a long time this was defined the same as BufferIsPinned,
|
|
289
|
+
* that is it would say False if you didn't hold a pin on the buffer.
|
|
290
|
+
* I believe this was bogus and served only to mask logic errors.
|
|
291
|
+
* Code should always know whether it has a buffer reference,
|
|
292
|
+
* independently of the pin state.
|
|
293
|
+
*
|
|
294
|
+
* Note: For a further long time this was not quite the inverse of the
|
|
295
|
+
* BufferIsInvalid() macro, in that it also did sanity checks to verify
|
|
296
|
+
* that the buffer number was in range. Most likely, this macro was
|
|
297
|
+
* originally intended only to be used in assertions, but its use has
|
|
298
|
+
* since expanded quite a bit, and the overhead of making those checks
|
|
299
|
+
* even in non-assert-enabled builds can be significant. Thus, we've
|
|
300
|
+
* now demoted the range checks to assertions within the macro itself.
|
|
301
|
+
*/
|
|
302
|
+
static inline bool
|
|
303
|
+
BufferIsValid(Buffer bufnum)
|
|
304
|
+
{
|
|
305
|
+
Assert(bufnum <= NBuffers);
|
|
306
|
+
Assert(bufnum >= -NLocBuffer);
|
|
307
|
+
|
|
308
|
+
return bufnum != InvalidBuffer;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/*
|
|
312
|
+
* BufferGetBlock
|
|
313
|
+
* Returns a reference to a disk page image associated with a buffer.
|
|
314
|
+
*
|
|
315
|
+
* Note:
|
|
316
|
+
* Assumes buffer is valid.
|
|
317
|
+
*/
|
|
318
|
+
static inline Block
|
|
319
|
+
BufferGetBlock(Buffer buffer)
|
|
320
|
+
{
|
|
321
|
+
Assert(BufferIsValid(buffer));
|
|
322
|
+
|
|
323
|
+
if (BufferIsLocal(buffer))
|
|
324
|
+
return LocalBufferBlockPointers[-buffer - 1];
|
|
325
|
+
else
|
|
326
|
+
return (Block) (BufferBlocks + ((Size) (buffer - 1)) * BLCKSZ);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/*
|
|
330
|
+
* BufferGetPageSize
|
|
331
|
+
* Returns the page size within a buffer.
|
|
332
|
+
*
|
|
333
|
+
* Notes:
|
|
334
|
+
* Assumes buffer is valid.
|
|
335
|
+
*
|
|
336
|
+
* The buffer can be a raw disk block and need not contain a valid
|
|
337
|
+
* (formatted) disk page.
|
|
338
|
+
*/
|
|
339
|
+
/* XXX should dig out of buffer descriptor */
|
|
340
|
+
static inline Size
|
|
341
|
+
BufferGetPageSize(Buffer buffer)
|
|
342
|
+
{
|
|
343
|
+
AssertMacro(BufferIsValid(buffer));
|
|
344
|
+
return (Size) BLCKSZ;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/*
|
|
348
|
+
* BufferGetPage
|
|
349
|
+
* Returns the page associated with a buffer.
|
|
350
|
+
*
|
|
351
|
+
* When this is called as part of a scan, there may be a need for a nearby
|
|
352
|
+
* call to TestForOldSnapshot(). See the definition of that for details.
|
|
353
|
+
*/
|
|
354
|
+
static inline Page
|
|
355
|
+
BufferGetPage(Buffer buffer)
|
|
356
|
+
{
|
|
357
|
+
return (Page) BufferGetBlock(buffer);
|
|
358
|
+
}
|
|
359
|
+
|
|
259
360
|
/*
|
|
260
361
|
* Check whether the given snapshot is too old to have safely read the given
|
|
261
362
|
* page from the given table. If so, throw a "snapshot too old" error.
|