-
Couldn't load subscription status.
- Fork 141
Add support for DuckDB MAP functions #902
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for your work on this! The functions you defined had a bunch of wrong types. And the docs are clearly fully AI generated, with no manual sanity check, because the syntax doesn't work.
| CREATE FUNCTION @[email protected]_extract(map_col duckdb.map, key text) | ||
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | ||
| CREATE FUNCTION @[email protected]_extract(map_col duckdb.unresolved_type, key text) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| CREATE FUNCTION @[email protected]_extract(map_col duckdb.map, key text) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_extract(map_col duckdb.unresolved_type, key text) | |
| CREATE FUNCTION @[email protected]_extract(map_col duckdb.map, key any) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_extract(map_col duckdb.unresolved_type, key any) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PostgreSQL threw ERROR: syntax error at or near "any" when i actually used this.Thus used duckdb.unresolved_type + explicit type overloads instead.
Please let me know if this makes sense.
sql/pg_duckdb--1.0.0--1.1.0.sql
Outdated
| CREATE FUNCTION @[email protected](map_col duckdb.map) | ||
| RETURNS integer AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | ||
| CREATE FUNCTION @[email protected](map_col duckdb.unresolved_type) | ||
| RETURNS integer AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| CREATE FUNCTION @[email protected](map_col duckdb.map) | |
| RETURNS integer AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected](map_col duckdb.unresolved_type) | |
| RETURNS integer AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected](map_col duckdb.map) | |
| RETURNS numeric AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected](map_col duckdb.unresolved_type) | |
| RETURNS numeric AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; |
| CREATE FUNCTION @[email protected]_at(map_col duckdb.map, key text) | ||
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | ||
| CREATE FUNCTION @[email protected]_at(map_col duckdb.unresolved_type, key text) | ||
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | ||
| CREATE FUNCTION @[email protected]_at(map_col duckdb.map, key integer) | ||
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | ||
| CREATE FUNCTION @[email protected]_at(map_col duckdb.unresolved_type, key integer) | ||
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| CREATE FUNCTION @[email protected]_at(map_col duckdb.map, key text) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_at(map_col duckdb.unresolved_type, key text) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_at(map_col duckdb.map, key integer) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_at(map_col duckdb.unresolved_type, key integer) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_at(map_col duckdb.map, key any) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_at(map_col duckdb.unresolved_type, key any) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; |
| CREATE FUNCTION @[email protected]_contains(map_col duckdb.map, key text) | ||
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | ||
| CREATE FUNCTION @[email protected]_contains(map_col duckdb.unresolved_type, key text) | ||
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | ||
| CREATE FUNCTION @[email protected]_contains(map_col duckdb.map, key integer) | ||
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | ||
| CREATE FUNCTION @[email protected]_contains(map_col duckdb.unresolved_type, key integer) | ||
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| CREATE FUNCTION @[email protected]_contains(map_col duckdb.map, key text) | |
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_contains(map_col duckdb.unresolved_type, key text) | |
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_contains(map_col duckdb.map, key integer) | |
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_contains(map_col duckdb.unresolved_type, key integer) | |
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_contains(map_col duckdb.map, key any) | |
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_contains(map_col duckdb.unresolved_type, key any) | |
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; |
| CREATE FUNCTION @[email protected]_contains_value(map_col duckdb.map, value text) | ||
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | ||
| CREATE FUNCTION @[email protected]_contains_value(map_col duckdb.unresolved_type, value text) | ||
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| CREATE FUNCTION @[email protected]_contains_value(map_col duckdb.map, value text) | |
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_contains_value(map_col duckdb.unresolved_type, value text) | |
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_contains_value(map_col duckdb.map, value any) | |
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_contains_value(map_col duckdb.unresolved_type, value any) | |
| RETURNS boolean AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; |
| CREATE FUNCTION @[email protected]_extract_value(map_col duckdb.map, key text) | ||
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | ||
| CREATE FUNCTION @[email protected]_extract_value(map_col duckdb.unresolved_type, key text) | ||
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | ||
| CREATE FUNCTION @[email protected]_extract_value(map_col duckdb.map, key integer) | ||
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | ||
| CREATE FUNCTION @[email protected]_extract_value(map_col duckdb.unresolved_type, key integer) | ||
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| CREATE FUNCTION @[email protected]_extract_value(map_col duckdb.map, key text) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_extract_value(map_col duckdb.unresolved_type, key text) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_extract_value(map_col duckdb.map, key integer) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_extract_value(map_col duckdb.unresolved_type, key integer) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_extract_value(map_col duckdb.map, key any) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_extract_value(map_col duckdb.unresolved_type, key any) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; |
sql/pg_duckdb--1.0.0--1.1.0.sql
Outdated
| CREATE FUNCTION @[email protected]_from_entries(entries duckdb.unresolved_type) | ||
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| CREATE FUNCTION @[email protected]_from_entries(entries duckdb.unresolved_type) | |
| RETURNS duckdb.unresolved_type AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_from_entries(entries duckdb.struct[]) | |
| RETURNS duckdb.map AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; | |
| CREATE FUNCTION @[email protected]_from_entries(entries duckdb.unresolved_type) | |
| RETURNS duckdb.map AS 'MODULE_PATHNAME', 'duckdb_only_function' LANGUAGE C; |
|
@shivampr Are you intending to address the comments? |
- Add map_extract, map_keys, map_values, cardinality, element_at, map_concat, map_contains, map_contains_entry, map_contains_value, map_entries, map_extract_value, and map_from_entries functions - Create migration file pg_duckdb--1.0.0--1.1.0.sql with function definitions - Update metadata cache to recognize all MAP functions as DuckDB-only - Add comprehensive tests covering all functions with edge cases - Update documentation with detailed usage examples and function descriptions - Bump version to 1.1.0 in pg_duckdb.control - Add regression tests to schedule Closes duckdb#774
Use duckdb.unresolved_type with explicit overloads for type flexibility, fix return types, update docs to use duckdb.query() syntax. Closes duckdb#774
adeee94 to
e3f6a7b
Compare
Changes
Implement map_extract, map_keys, map_values, cardinality, element_at, map_concat, map_contains, map_contains_entry, map_contains_value, map_entries, map_extract_value, and map_from_entries functions
Testing
Closes #774