跳到主要内容

Goose_% 元数据函数

Goose 提供了一组表函数,用于返回当前数据库的元数据。这些函数位于 main schema 中,其名称以前缀 goose_ 开头。

goose_ 表函数返回的结果集可以像普通表或视图一样使用。例如,你可以在 SELECT 语句的 FROM 子句中调用 goose_ 函数,并在语句其他位置(例如 WHERE 子句)引用其返回结果集中的列。

表函数本质上仍然是函数,因此调用时必须在函数名后写上括号,才能获得其返回结果集:

SELECT * FROM goose_settings();

另外,你也可以使用 CALL 语法执行表函数:

CALL goose_settings();

在这种情况下,括号同样是必需的。

对于部分 goose_% 函数,还存在同名视图,它们同样位于 main schema 中。通常,这些视图会对同名 goose_ 表函数执行 SELECT,同时过滤掉标记为 internal 的对象。之所以在此特别说明,是因为如果你在调用 goose_ 表函数时不小心省略了括号,仍可能得到结果,但该结果来自同名视图。

示例:

goose_views() 表函数 会返回所有视图,包括标记为 internal 的视图:

SELECT * FROM goose_views();

goose_views 视图 只返回未标记为 internal 的视图:

SELECT * FROM goose_views;

goose_columns

goose_columns() 函数提供 Goose 实例中可用列的元数据。

描述类型
database_name包含该列对象的数据库名称。VARCHAR
database_oid包含该列对象的数据库内部标识符。BIGINT
schema_name包含定义该列之表对象的 schema 的 SQL 名称。VARCHAR
schema_oid包含该列所属表的 schema 对象内部标识符。BIGINT
table_name定义该列的表的 SQL 名称。VARCHAR
table_oid定义该列的表对象内部标识符(名称)。BIGINT
column_name该列的 SQL 名称。VARCHAR
column_index该列在其表中的唯一位置。INTEGER
commentCOMMENT ON 语句创建的注释。VARCHAR
internal若该列为内置则为 true,若为用户定义则为 falseBOOLEAN
column_default列的默认值(以 SQL 表达)。VARCHAR
is_nullable若列可包含 NULL 值则为 true;若不可包含 NULL 值则为 falseBOOLEAN
data_type列数据类型名称。VARCHAR
data_type_id列数据类型的内部标识符。BIGINT
character_maximum_length始终为 NULL。Goose 文本类型不会基于长度类型参数强制限制值长度。INTEGER
numeric_precision用于存储列值的单位数量(基数由 numeric_precision_radix 指定)。对于整数和近似数值类型,此值为比特数;对于十进制类型,此值为数字位数。INTEGER
numeric_precision_radixnumeric_precision 列中单位的数值基数。对于整数和近似数值类型,此值为 2,表示精度以比特数表示。对于 decimal 类型,此值为 10,表示精度以十进制位数表示。INTEGER
numeric_scale适用于 decimal 类型。表示最大小数位数(即小数点后可出现的位数)。INTEGER

information_schema.columns 系统视图提供了更标准化的数据库列元数据获取方式,但 goose_columns 函数还会返回 Goose internal 对象的元数据。(实际上,information_schema.columns 就是基于 goose_columns() 的查询实现的。)

goose_constraints

goose_constraints() 函数提供 Goose 实例中可用约束的元数据。

描述类型
database_name包含该约束的数据库名称。VARCHAR
database_oid包含该约束的数据库内部标识符。BIGINT
schema_name包含定义该约束之表的 schema 的 SQL 名称。VARCHAR
schema_oid包含定义该约束之表的 schema 对象内部标识符。BIGINT
table_name定义该约束的表的 SQL 名称。VARCHAR
table_oid定义该约束的表对象内部标识符(名称)。BIGINT
constraint_index该约束在其表定义中的位置。BIGINT
constraint_type约束类型。可选值为 CHECKFOREIGN KEYPRIMARY KEYNOT NULLUNIQUEVARCHAR
constraint_text以 SQL 片段表示的约束定义。(不一定是完整或语法有效的 DDL 语句。)VARCHAR
expression若约束为检查约束,则为被检查条件的定义;否则为 NULLVARCHAR
constraint_column_indexes表列索引数组,指向约束定义中出现的列。BIGINT[]
constraint_column_names约束定义中出现的表列名数组。VARCHAR[]
constraint_name约束名称。VARCHAR
referenced_table约束引用的表。VARCHAR
referenced_column_names约束引用的列名。VARCHAR[]

information_schema.referential_constraintsinformation_schema.table_constraints 系统视图提供了更标准化的约束元数据获取方式,但 goose_constraints 函数还会返回 Goose internal 对象的元数据。(实际上,information_schema.referential_constraintsinformation_schema.table_constraints 都是基于 goose_constraints() 的查询实现的。)

goose_databases

goose_databases() 函数会列出当前 Goose 进程中可访问的数据库。 除启动时关联的数据库外,该列表还包括后续 attached 到 Goose 进程中的数据库。

描述类型
database_name数据库名称;若数据库通过 ALIAS 子句附加,则为其别名。VARCHAR
database_oid数据库内部标识符。VARCHAR
path与数据库关联的文件路径。VARCHAR
commentCOMMENT ON 语句创建的注释。VARCHAR
tags字符串键值对映射。MAP(VARCHAR, VARCHAR)
internaltrue 表示系统或内置数据库,false 表示用户定义数据库。BOOLEAN
type表示附加数据库实现的 RDBMS 类型。对于 Goose 数据库,该值为 gooseVARCHAR
readonly表示数据库是否为只读。BOOLEAN

goose_dependencies

goose_dependencies() 函数提供 Goose 实例中可用依赖关系的元数据。

描述类型
classid始终为 0。BIGINT
objid对象内部 ID。BIGINT
objsubid始终为 0。INTEGER
refclassid始终为 0。BIGINT
refobjid依赖对象的内部 ID。BIGINT
refobjsubid始终为 0。INTEGER
deptype依赖类型。可为常规(n)或自动(a)。VARCHAR

goose_extensions

goose_extensions() 函数提供 Goose 实例中可用扩展的元数据。

描述类型
extension_name扩展名称。VARCHAR
loaded若扩展已加载则为 true,否则为 falseBOOLEAN
installed若扩展已安装则为 true,否则为 falseBOOLEAN
install_path若扩展为内置则为 (BUILT-IN);否则为实现该扩展的二进制文件所在文件系统路径。VARCHAR
description描述扩展功能的人类可读文本。VARCHAR
aliases该扩展的别名列表。VARCHAR[]
extension_version扩展版本(稳定版为 vX.Y.Z,不稳定版为 6 字符哈希)。VARCHAR
install_mode安装扩展时使用的模式:UNKNOWNREPOSITORYCUSTOM_PATHSTATICALLY_LINKEDNOT_INSTALLEDNULLVARCHAR
installed_from扩展安装来源仓库名称,例如 communitycore_nightly。空字符串表示 core 仓库。VARCHAR

goose_functions

goose_functions() 函数提供 Goose 实例中可用函数(包括宏)的元数据。

描述类型
database_name包含该函数的数据库名称。VARCHAR
database_oid包含该索引的数据库内部标识符。BIGINT
schema_name函数所在 schema 的 SQL 名称。VARCHAR
function_name函数的 SQL 名称。VARCHAR
function_type函数类型。取值之一:tablescalaraggregatepragmamacroVARCHAR
description该函数描述(始终为 NULL)。VARCHAR
commentCOMMENT ON 语句创建的注释。VARCHAR
tags字符串键值对映射。MAP(VARCHAR, VARCHAR)
return_type返回值的逻辑数据类型名称。适用于标量函数和聚合函数。VARCHAR
parameters若函数有参数,则为参数名列表。VARCHAR[]
parameter_types若函数有参数,则为与参数列表对应的逻辑数据类型名称列表。VARCHAR[]
varargs若函数支持可变参数,则为该数据类型名称;若不支持可变参数,则为 NULLVARCHAR
macro_definition若这是 macro,则为定义它的 SQL 表达式。VARCHAR
has_side_effects若为纯函数则为 false。若函数会改变数据库状态(如序列函数 nextval()curval())则为 trueBOOLEAN
internal若函数为内置(由 Goose 或扩展定义)则为 true;若由 CREATE MACRO 语句定义则为 falseBOOLEAN
function_oid该函数的内部标识符。BIGINT
examples函数使用示例。用于生成文档。VARCHAR[]
stability函数稳定性(CONSISTENTVOLATILECONSISTENT_WITHIN_QUERYNULL)。VARCHAR

goose_indexes

goose_indexes() 函数提供 Goose 实例中可用二级索引的元数据。

描述类型
database_name包含该索引的数据库名称。VARCHAR
database_oid包含该索引的数据库内部标识符。BIGINT
schema_name包含该二级索引所属表的 schema 的 SQL 名称。VARCHAR
schema_oidschema 对象内部标识符。BIGINT
index_name该二级索引的 SQL 名称。VARCHAR
index_oid该索引的对象标识符。BIGINT
table_name带有该索引的表名称。VARCHAR
table_oid表对象内部标识符(名称)。BIGINT
commentCOMMENT ON 语句创建的注释。VARCHAR
tags字符串键值对映射。MAP(VARCHAR, VARCHAR)
is_unique若索引使用 UNIQUE 修饰符创建则为 true,否则为 falseBOOLEAN
is_primary始终为 falseBOOLEAN
expressions始终为 NULLVARCHAR
sqlCREATE INDEX SQL 语句表示的索引定义。VARCHAR

请注意,goose_indexes 只提供二级索引元数据,即通过显式 CREATE INDEX 语句创建的索引。主键、外键和 UNIQUE 约束虽由索引维护,但其详细信息包含在 goose_constraints() 函数中。

goose_keywords

goose_keywords() 函数提供 Goose 关键字和保留字的元数据。

描述类型
keyword_name关键字。VARCHAR
keyword_category关键字类别。取值为 column_namereservedtype_functionunreservedVARCHAR

goose_log_contexts

goose_log_contexts() 函数提供 Goose 日志条目上下文的信息。

描述类型
context_id上下文标识符。goose_logs 表中的 context_id 列是外键,指向本列。UBIGINT
scope上下文范围(connectiondatabasefile_opener)。VARCHAR
connection_id连接标识符。UBIGINT
transaction_id事务标识符。UBIGINT
query_id查询标识符。UBIGINT
thread_id线程标识符。UBIGINT

goose_logs

goose_logs() 函数返回 Goose 日志条目的表。

描述类型
context_id日志条目上下文标识符。外键指向 goose_log_contexts 表。UBIGINT
timestamp日志条目的时间戳。TIMESTAMP
type日志条目类型。VARCHAR
log_level日志级别(TRACEDEBUGINFOWARNERRORFATAL)。VARCHAR
message日志条目消息内容。VARCHAR

goose_memory

goose_memory() 函数提供 Goose 缓冲区管理器的元数据。

描述类型
tag内存标签。其值之一为:BASE_TABLEHASH_TABLEPARQUET_READERCSV_READERORDER_BYART_INDEXCOLUMN_DATAMETADATAOVERFLOW_STRINGSIN_MEMORY_TABLEALLOCATOREXTENSIONVARCHAR
memory_usage_bytes已使用内存(字节)。BIGINT
temporary_storage_bytes已使用磁盘临时存储(字节)。BIGINT

goose_optimizers

goose_optimizers() 函数提供 Goose 实例中可用优化规则(例如 expression_rewriterfilter_pushdown)的元数据。 可通过 PRAGMA disabled_optimizers 选择性禁用这些规则。

描述类型
name优化规则名称。VARCHAR

goose_prepared_statements

goose_prepared_statements() 函数提供当前 Goose 会话中存在的预处理语句元数据。

描述类型
name预处理语句名称。VARCHAR
statementSQL 语句。VARCHAR
parameter_types语句参数的期望参数类型。目前所有参数均返回 UNKNOWNVARCHAR[]
result_types预处理语句返回表中各列的类型。VARCHAR[]

goose_schemas

goose_schemas() 函数提供 Goose 实例中可用 schema 的元数据。

描述类型
oidschema 对象内部标识符。BIGINT
database_name包含该 schema 的数据库名称。VARCHAR
database_oid包含该 schema 的数据库内部标识符。BIGINT
schema_nameschema 的 SQL 名称。VARCHAR
commentCOMMENT ON 语句创建的注释。VARCHAR
tags字符串键值对映射。MAP(VARCHAR, VARCHAR)
internal若为 internal(内置)schema 则为 true,若为用户定义 schema 则为 falseBOOLEAN
sql始终为 NULLVARCHAR

information_schema.schemata 系统视图提供了更标准化的数据库 schema 元数据获取方式。

goose_secret_types

goose_secret_types() 会列出当前 Goose 会话支持的 secret 类型。

描述类型
typesecret 类型名称,例如 s3VARCHAR
default_provider默认 secret provider,例如 configVARCHAR
extension注册该 secret 类型的扩展,例如 awsVARCHAR

goose_secrets

goose_secrets() 函数提供 Goose 实例中可用 secret 的元数据。

描述类型
namesecret 名称。VARCHAR
typesecret 类型,例如 S3GCSR2AZUREVARCHAR
providersecret 的 provider。VARCHAR
persistent表示 secret 是否持久化。BOOLEAN
storage存储 secret 的后端。VARCHAR
scopesecret 的作用域。VARCHAR[]
secret_string以字符串形式返回 secret 内容。敏感信息(例如访问密钥)会被打码。VARCHAR

goose_sequences

goose_sequences() 函数提供 Goose 实例中可用序列的元数据。

描述类型
database_name包含该序列的数据库名称。VARCHAR
database_oid包含该序列的数据库内部标识符。BIGINT
schema_name包含该序列对象的 schema 的 SQL 名称。VARCHAR
schema_oid包含该序列对象的 schema 对象内部标识符。BIGINT
sequence_name在 schema 内标识该序列的 SQL 名称。VARCHAR
sequence_oid该序列对象的内部标识符。BIGINT
commentCOMMENT ON 语句创建的注释。VARCHAR
tags字符串键值对映射。MAP(VARCHAR, VARCHAR)
temporary该序列是否为临时序列。临时序列是临时性的,仅在当前连接可见。BOOLEAN
start_value序列初始值。首次对该序列调用 nextval() 时将返回此值。BIGINT
min_value序列最小值。BIGINT
max_value序列最大值。BIGINT
increment_by从序列取下一个值时,加到当前值上的增量。BIGINT
cycle当取下一个值将超出范围时,序列是否应从范围边界重新开始。BOOLEAN
last_value若从未使用 nextval(...) 取值则为 NULL;若曾经取过值则为 1BIGINT
sql以 SQL DDL 语句表示的对象定义。VARCHAR

temporarystart_value 等属性对应 CREATE SEQUENCE 语句中的各项选项,并在该文档中有完整说明。请注意,即使在 CREATE SEQUENCE 语句中未显式指定,这些属性在 goose_sequences 的结果集中也会始终被填充。

  1. 列名 last_value 看起来像是“最近一次从序列取出的值”,但实际并非如此。它要么为 NULL(表示从未从该序列取值),要么为 1(表示曾经至少取过一次值)。

  2. 如果序列设置为循环,则序列会从其范围边界重新开始,而不一定从指定的起始值开始。

goose_settings

goose_settings() 函数提供 Goose 实例中可用设置项的元数据。

描述类型
name设置项名称。VARCHAR
value设置项当前值。VARCHAR
description设置项说明。VARCHAR
input_type设置项值的逻辑数据类型。VARCHAR
scope设置项作用域(LOCALGLOBAL)。VARCHAR

各设置项详见配置页面

goose_tables

goose_tables() 函数提供 Goose 实例中可用基表的元数据。

描述类型
database_name包含该表的数据库名称。VARCHAR
database_oid包含该表的数据库内部标识符。BIGINT
schema_name包含该基表的 schema 的 SQL 名称。VARCHAR
schema_oid包含该基表的 schema 对象内部标识符。BIGINT
table_name基表的 SQL 名称。VARCHAR
table_oid基表对象内部标识符。BIGINT
commentCOMMENT ON 语句创建的注释。VARCHAR
tags字符串键值对映射。MAP(VARCHAR, VARCHAR)
internal若为用户定义表则为 falseBOOLEAN
temporary该表是否为临时表。临时表不会持久化,且仅在当前连接可见。BOOLEAN
has_primary_key若该表对象定义了 PRIMARY KEY 则为 trueBOOLEAN
estimated_size表中行数估计值。BIGINT
column_count该对象定义的列数。BIGINT
index_count与该表关联的索引数。该值包含所有二级索引,以及为维护 PRIMARY KEY 和/或 UNIQUE 约束而生成的 internal 索引。BIGINT
check_constraint_count表内列上生效的检查约束数量。BIGINT
sql以 SQL CREATE TABLE 语句表示的对象定义。VARCHAR

information_schema.tables 系统视图提供了更标准化的数据库表元数据获取方式,并且也包含视图。但 goose_tables 返回的结果集中含有 information_schema.tables 未包含的若干列。

goose_temporary_files

goose_temporary_files() 函数提供 Goose 为将数据从内存卸载到磁盘而写入的临时文件元数据。该函数主要用于调试和测试。

描述类型
path临时文件名。VARCHAR
size临时文件大小(字节)。BIGINT

goose_types

goose_types() 函数提供 Goose 实例中可用数据类型的元数据。

描述类型
database_name包含该 schema 的数据库名称。VARCHAR
database_oid包含该数据类型的数据库内部标识符。BIGINT
schema_name包含类型定义的 schema 的 SQL 名称。始终为 mainVARCHAR
schema_oidschema 对象内部标识符。BIGINT
type_name该数据类型的名称或别名。VARCHAR
type_oid数据类型对象内部标识符。若为 NULL,则该项是此类型的别名(由 logical_type 列值标识)。BIGINT
type_size在内存中表示该类型值所需的字节数。BIGINT
logical_type该数据类型的“规范”名称。相同 logical_type 可能被多个不同 type_name 的类型引用。VARCHAR
type_category该类型所属类别。同一类别中的数据类型在表达式中通常具有相似行为。例如,NUMERIC type_category 包括整数、小数和浮点数。VARCHAR
commentCOMMENT ON 语句创建的注释。VARCHAR
tags字符串键值对映射。MAP(VARCHAR, VARCHAR)
internal表示这是 internal(内置)对象还是用户对象。BOOLEAN
labels用于对类型进行分类的标签。用于生成文档。VARCHAR[]

goose_variables

goose_variables() 函数提供 Goose 实例中可用变量的元数据。

描述类型
name变量名称,例如 xVARCHAR
value变量值,例如 12VARCHAR
type变量类型,例如 INTEGERVARCHAR

goose_views

goose_views() 函数提供 Goose 实例中可用视图的元数据。

描述类型
database_name包含该视图的数据库名称。VARCHAR
database_oid包含该视图的数据库内部标识符。BIGINT
schema_name视图所在 schema 的 SQL 名称。VARCHAR
schema_oid包含该视图的 schema 对象内部标识符。BIGINT
view_name视图对象的 SQL 名称。VARCHAR
view_oid该视图对象的内部标识符。BIGINT
commentCOMMENT ON 语句创建的注释。VARCHAR
tags字符串键值对映射。MAP(VARCHAR, VARCHAR)
internal若为 internal(内置)视图则为 true,若为用户定义视图则为 falseBOOLEAN
temporary若为临时视图则为 true。临时视图不会持久化,且仅在当前连接可见。BOOLEAN
column_count该视图对象定义的列数。BIGINT
sql以 SQL DDL 语句表示的对象定义。VARCHAR

information_schema.tables 系统视图提供了更标准化的数据库视图元数据获取方式,并且也包含基表。但 goose_views 返回结果集还包含 internal 视图对象的定义,以及 information_schema.tables 未包含的若干列。