paleolimbot commented on code in PR #4031:
URL: https://github.com/apache/arrow-adbc/pull/4031#discussion_r2870295848
##########
c/include/arrow-adbc/adbc.h:
##########
@@ -1858,6 +1858,96 @@ AdbcStatusCode AdbcConnectionGetObjects(struct
AdbcConnection* connection, int d
struct ArrowArrayStream* out,
struct AdbcError* error);
+/// \brief Get a hierarchical view of all functions and procedures.
+///
+/// The result is an Arrow dataset with the following schema:
+///
+/// | Field Name | Field Type |
+/// |--------------------------|-------------------------|
+/// | catalog_name | utf8 |
+/// | catalog_db_schemas | list<DB_SCHEMA_SCHEMA> |
+///
+/// DB_SCHEMA_SCHEMA is a Struct with fields:
+///
+/// | Field Name | Field Type |
+/// |--------------------------|-------------------------|
+/// | db_schema_name | utf8 |
+/// | db_schema_routines | list<ROUTINE_SCHEMA> |
+///
+/// ROUTINE_SCHEMA is a Struct with fields:
+///
+/// | Field Name | Field Type | Comments |
+/// |--------------------------|-------------------------|----------|
+/// | routine_name | utf8 not null | |
+/// | routine_specific_name | utf8 not null | (1) |
+/// | routine_type | utf8 not null | (2) |
+/// | routine_remarks | utf8 | (3) |
+/// | routine_parameters | list<PARAMETER_SCHEMA> | (4) |
+/// | routine_result | list<PARAMETER_SCHEMA> | (4) |
+/// | routine_parameter_schema | binary | (5) |
+/// | routine_result_schema | binary | (5) |
+///
Review Comment:
DataFusion and DuckDB both have "description" and SQL examples (useful for
generating help pages or inline help). Where would these go?
##########
c/include/arrow-adbc/adbc.h:
##########
@@ -1858,6 +1858,96 @@ AdbcStatusCode AdbcConnectionGetObjects(struct
AdbcConnection* connection, int d
struct ArrowArrayStream* out,
struct AdbcError* error);
+/// \brief Get a hierarchical view of all functions and procedures.
+///
+/// The result is an Arrow dataset with the following schema:
+///
+/// | Field Name | Field Type |
+/// |--------------------------|-------------------------|
+/// | catalog_name | utf8 |
+/// | catalog_db_schemas | list<DB_SCHEMA_SCHEMA> |
+///
+/// DB_SCHEMA_SCHEMA is a Struct with fields:
+///
+/// | Field Name | Field Type |
+/// |--------------------------|-------------------------|
+/// | db_schema_name | utf8 |
+/// | db_schema_routines | list<ROUTINE_SCHEMA> |
+///
+/// ROUTINE_SCHEMA is a Struct with fields:
+///
+/// | Field Name | Field Type | Comments |
+/// |--------------------------|-------------------------|----------|
+/// | routine_name | utf8 not null | |
+/// | routine_specific_name | utf8 not null | (1) |
+/// | routine_type | utf8 not null | (2) |
+/// | routine_remarks | utf8 | (3) |
+/// | routine_parameters | list<PARAMETER_SCHEMA> | (4) |
+/// | routine_result | list<PARAMETER_SCHEMA> | (4) |
+/// | routine_parameter_schema | binary | (5) |
+/// | routine_result_schema | binary | (5) |
+///
+/// 1. A name that uniquely identifies the routine, to disambiguate
+/// overloads.
+/// 2. 'FUNCTION', 'PROCEDURE', or a vendor-specific name (e.g. 'TABLE
+/// FUNCTION').
+/// 3. Vendor-specific description of the routine.
+/// 4. Metadata about the accepted parameters and return values as structured
+/// Arrow data. Only populated if include_columns is set, otherwise null.
+/// 5. Metadata about the accepted parameters and return values as an Arrow
+/// schema, serialized as an IPC message containing a schema Flatbuffers
+/// structure. Only populated if include_arrow_schema is set, otherwise
+/// null.
+///
+/// PARAMETER_SCHEMA is a Struct with fields:
+///
+/// | Field Name | Field Type | Comments |
+/// |--------------------------|-------------------------|----------|
+/// | param_name | utf8 not null | |
+/// | ordinal_position | int32 | (1) |
+/// | remarks | utf8 | (2) |
+/// | param_type | utf8 | (3) |
+/// | xdbc_data_type | int16 | (3) |
+/// | xdbc_type_name | utf8 | (3) |
+/// | xdbc_precision | int32 | (3) |
+/// | xdbc_length | int32 | (3) |
+/// | xdbc_scale | int16 | (3) |
+/// | xdbc_num_prec_radix | int16 | (3) |
+/// | xdbc_nullable | int16 | (3) |
+/// | xdbc_char_octet_length | int32 | (3) |
+/// | xdbc_is_nullable | utf8 | (3) |
Review Comment:
It is a good thing LLMs are much better than they were when creating
builders/parsers for the last nested GetObjects schema 🙂
##########
c/include/arrow-adbc/adbc.h:
##########
@@ -1858,6 +1858,96 @@ AdbcStatusCode AdbcConnectionGetObjects(struct
AdbcConnection* connection, int d
struct ArrowArrayStream* out,
struct AdbcError* error);
+/// \brief Get a hierarchical view of all functions and procedures.
+///
+/// The result is an Arrow dataset with the following schema:
+///
+/// | Field Name | Field Type |
+/// |--------------------------|-------------------------|
+/// | catalog_name | utf8 |
+/// | catalog_db_schemas | list<DB_SCHEMA_SCHEMA> |
+///
+/// DB_SCHEMA_SCHEMA is a Struct with fields:
+///
+/// | Field Name | Field Type |
+/// |--------------------------|-------------------------|
+/// | db_schema_name | utf8 |
+/// | db_schema_routines | list<ROUTINE_SCHEMA> |
+///
+/// ROUTINE_SCHEMA is a Struct with fields:
+///
+/// | Field Name | Field Type | Comments |
+/// |--------------------------|-------------------------|----------|
+/// | routine_name | utf8 not null | |
+/// | routine_specific_name | utf8 not null | (1) |
+/// | routine_type | utf8 not null | (2) |
+/// | routine_remarks | utf8 | (3) |
+/// | routine_parameters | list<PARAMETER_SCHEMA> | (4) |
+/// | routine_result | list<PARAMETER_SCHEMA> | (4) |
+/// | routine_parameter_schema | binary | (5) |
+/// | routine_result_schema | binary | (5) |
+///
+/// 1. A name that uniquely identifies the routine, to disambiguate
+/// overloads.
+/// 2. 'FUNCTION', 'PROCEDURE', or a vendor-specific name (e.g. 'TABLE
+/// FUNCTION').
+/// 3. Vendor-specific description of the routine.
+/// 4. Metadata about the accepted parameters and return values as structured
+/// Arrow data. Only populated if include_columns is set, otherwise null.
+/// 5. Metadata about the accepted parameters and return values as an Arrow
+/// schema, serialized as an IPC message containing a schema Flatbuffers
+/// structure. Only populated if include_arrow_schema is set, otherwise
+/// null.
Review Comment:
How about another function(s) instead of invoking flatbuffers and only
returning if a flag is set?
```c
AdbcConnectionGetRoutineParameterSchema(struct AdbcConnection* connection,
const char* catalog, const char* db_schema, const char* routine_name, struct
AdbcSchema** parameter_schema_out, int n_parameter_schema_out, struct
AdbcSchema** result_schema_out, int n_result_schema_out, struct AdbcError*
error);
```
...or something.
A related question whose answer is often as useful (or more useful) is:
given a list of arrow types (and the scalar argument values, if present), what
Arrow type would you give me back? This is roughly DataFusion's
`ScalarUdfImpl::return_field()`. I have an ABI for this because I have to write
a bunch of our UDFs in C++:
https://github.com/apache/sedona-db/blob/8b16f39b8a8806daacf3c09a2f6e1c864fed69e8/c/sedona-extension/src/sedona_extension.h#L148-L151
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]