diff --git a/Cargo.toml b/Cargo.toml index ccd30be..2a00d00 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ resolver = "2" members = ["vgi", "vgi-example-worker", "vgi-storage-server"] [workspace.package] -version = "0.8.0" +version = "0.9.0" edition = "2021" rust-version = "1.90" license-file = "LICENSE" diff --git a/vgi/src/catalog.rs b/vgi/src/catalog.rs index c50628a..596e12d 100644 --- a/vgi/src/catalog.rs +++ b/vgi/src/catalog.rs @@ -317,6 +317,7 @@ fn apply_metadata(fi: &mut FunctionInfo, meta: &FunctionMetadata) { fi.null_handling = meta.null_handling.as_deref().map(enums::dict); fi.categories = meta.categories.clone(); fi.examples = meta.examples.clone(); + fi.tags = meta.tags.clone(); if meta.projection_pushdown { fi.projection_pushdown = Some(true); } diff --git a/vgi/src/function.rs b/vgi/src/function.rs index 4ff9cea..811ad6f 100644 --- a/vgi/src/function.rs +++ b/vgi/src/function.rs @@ -190,6 +190,10 @@ pub struct FunctionMetadata { pub categories: Vec, /// SQL usage examples surfaced in `FunctionInfo` for discovery. pub examples: Vec, + /// Arbitrary worker-set tags surfaced via `FunctionInfo.tags` + /// (`duckdb_functions().tags`), e.g. `vgi.columns_md` documenting a table + /// function's returned columns. Merged with any extension-derived tags. + pub tags: Vec<(String, String)>, /// Fixed scalar return type, when not computed dynamically at bind. pub return_type: Option, pub projection_pushdown: bool, @@ -221,6 +225,7 @@ impl Default for FunctionMetadata { null_handling: None, categories: Vec::new(), examples: Vec::new(), + tags: Vec::new(), return_type: None, projection_pushdown: false, filter_pushdown: false,