You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@arrow.apache.org by "lidavidm (via GitHub)" <gi...@apache.org> on 2023/06/13 12:14:57 UTC

[GitHub] [arrow-adbc] lidavidm commented on a diff in pull request #769: refactor(c/driver/postgresql): Use AdbcGetInfoData structure

lidavidm commented on code in PR #769:
URL: https://github.com/apache/arrow-adbc/pull/769#discussion_r1228025695


##########
c/driver/common/utils.h:
##########
@@ -122,6 +124,130 @@ AdbcStatusCode AdbcInitConnectionObjectsSchema(struct ArrowSchema* schema,
                                                struct AdbcError* error);
 /// @}
 
+struct AdbcGetInfoUsage {
+  struct ArrowStringView fk_catalog;
+  struct ArrowStringView fk_db_schema;
+  struct ArrowStringView fk_table;
+  struct ArrowStringView fk_column_name;
+};
+
+struct AdbcGetInfoConstraint {
+  struct ArrowStringView constraint_name;
+  struct ArrowStringView constraint_type;
+  struct ArrowStringView* constraint_column_names;
+  int n_column_names;
+  struct AdbcGetInfoUsage** constraint_column_usages;
+  int n_column_usages;
+};
+
+struct AdbcGetInfoColumn {
+  struct ArrowStringView column_name;
+  int32_t ordinal_position;
+  struct ArrowStringView remarks;
+  int16_t xdbc_data_type;
+  struct ArrowStringView xdbc_type_name;
+  int32_t xdbc_column_size;
+  int16_t xdbc_decimal_digits;
+  int16_t xdbc_num_prec_radix;
+  int16_t xdbc_nullable;
+  struct ArrowStringView xdbc_column_def;
+  int16_t xdbc_sql_data_type;
+  int16_t xdbc_datetime_sub;
+  int32_t xdbc_char_octet_length;
+  struct ArrowStringView xdbc_is_nullable;
+  struct ArrowStringView xdbc_scope_catalog;
+  struct ArrowStringView xdbc_scope_schema;
+  struct ArrowStringView xdbc_scope_table;
+  bool xdbc_is_autoincrement;
+  bool xdbc_is_generatedcolumn;
+};
+
+struct AdbcGetInfoTable {
+  struct ArrowStringView table_name;
+  struct ArrowStringView table_type;
+  struct AdbcGetInfoColumn** table_columns;
+  int n_table_columns;
+  struct AdbcGetInfoConstraint** table_constraints;
+  int n_table_constraints;
+};
+
+struct AdbcGetInfoSchema {
+  struct ArrowStringView db_schema_name;
+  struct AdbcGetInfoTable** db_schema_tables;
+  int n_db_schema_tables;
+};
+
+struct AdbcGetInfoCatalog {
+  struct ArrowStringView catalog_name;
+  struct AdbcGetInfoSchema** catalog_db_schemas;
+  int n_db_schemas;
+};
+
+struct AdbcGetInfoData {
+  struct AdbcGetInfoCatalog** catalogs;
+  int n_catalogs;
+  struct ArrowArrayView* catalog_name_array;
+  struct ArrowArrayView* catalog_schemas_array;
+  struct ArrowArrayView* db_schema_name_array;
+  struct ArrowArrayView* db_schema_tables_array;
+  struct ArrowArrayView* table_name_array;
+  struct ArrowArrayView* table_type_array;
+  struct ArrowArrayView* table_columns_array;
+  struct ArrowArrayView* table_constraints_array;
+  struct ArrowArrayView* column_name_array;
+  struct ArrowArrayView* column_position_array;
+  struct ArrowArrayView* column_remarks_array;
+  struct ArrowArrayView* xdbc_data_type_array;
+  struct ArrowArrayView* xdbc_type_name_array;
+  struct ArrowArrayView* xdbc_column_size_array;
+  struct ArrowArrayView* xdbc_decimal_digits_array;
+  struct ArrowArrayView* xdbc_num_prec_radix_array;
+  struct ArrowArrayView* xdbc_nullable_array;
+  struct ArrowArrayView* xdbc_column_def_array;
+  struct ArrowArrayView* xdbc_sql_data_type_array;
+  struct ArrowArrayView* xdbc_datetime_sub_array;
+  struct ArrowArrayView* xdbc_char_octet_length_array;
+  struct ArrowArrayView* xdbc_is_nullable_array;
+  struct ArrowArrayView* xdbc_scope_catalog_array;
+  struct ArrowArrayView* xdbc_scope_schema_array;
+  struct ArrowArrayView* xdbc_scope_table_array;
+  struct ArrowArrayView* xdbc_is_autoincrement_array;
+  struct ArrowArrayView* xdbc_is_generatedcolumn_array;
+  struct ArrowArrayView* constraint_name_array;
+  struct ArrowArrayView* constraint_type_array;
+  struct ArrowArrayView* constraint_column_names_array;
+  struct ArrowArrayView* constraint_column_name_array;
+  struct ArrowArrayView* constraint_column_usages_array;
+  struct ArrowArrayView* fk_catalog_array;
+  struct ArrowArrayView* fk_db_schema_array;
+  struct ArrowArrayView* fk_table_array;
+  struct ArrowArrayView* fk_column_name_array;
+};
+
+// does not copy any data from array
+// returns NULL on error
+struct AdbcGetInfoData* AdbcGetInfoDataInit(struct ArrowArrayView* array_view);
+void AdbcGetInfoDataDelete(struct AdbcGetInfoData* get_info_data);
+
+// returns NULL on error
+// for now all arguments are required
+struct AdbcGetInfoCatalog* AdbcGetInfoDataGetCatalogByName(

Review Comment:
   Shouldn't these all be `GetObjects` not `GetInfo`?



##########
c/validation/adbc_validation_util.h:
##########
@@ -31,6 +31,7 @@
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
 #include <nanoarrow/nanoarrow.h>
+#include <utils.h>

Review Comment:
   Best to use "" includes for our headers
   
   Hmm, we may also want to switch to `common/utils.h` or something eventually, a bare utils.h is liable to get mixed up



-- 
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: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org