From ae8086c80369e88628c9f40d0ef3ed6497cba716 Mon Sep 17 00:00:00 2001 From: Ryan Syed Date: Fri, 15 Mar 2024 09:38:10 -0700 Subject: [PATCH] refactor: modularized code and fixed variable naming conventions in C# --- .../Metadata/GetObjectsParser.cs | 20 ++--- go/adbc/driver/internal/shared_utils.go | 81 +++++++++++-------- 2 files changed, 57 insertions(+), 44 deletions(-) diff --git a/csharp/test/Apache.Arrow.Adbc.Tests/Metadata/GetObjectsParser.cs b/csharp/test/Apache.Arrow.Adbc.Tests/Metadata/GetObjectsParser.cs index 44ee823f85..10a3a986dd 100644 --- a/csharp/test/Apache.Arrow.Adbc.Tests/Metadata/GetObjectsParser.cs +++ b/csharp/test/Apache.Arrow.Adbc.Tests/Metadata/GetObjectsParser.cs @@ -161,8 +161,8 @@ private static List ParseConstraints(StructArray constraintsArra StringArray name = (StringArray)constraintsArray.Fields[StandardSchemas.ConstraintSchema.FindIndex(f => f.Name == "constraint_name")]; // constraint_name | utf8 StringArray type = (StringArray)constraintsArray.Fields[StandardSchemas.ConstraintSchema.FindIndex(f => f.Name == "constraint_type")]; // constraint_type | utf8 not null - ListArray column_names = (ListArray)constraintsArray.Fields[StandardSchemas.ConstraintSchema.FindIndex(f => f.Name == "constraint_column_names")]; // constraint_column_names | list not null - ListArray column_usage = (ListArray)constraintsArray.Fields[StandardSchemas.ConstraintSchema.FindIndex(f => f.Name == "constraint_column_usage")]; // constraint_column_usage | list + ListArray columnNames = (ListArray)constraintsArray.Fields[StandardSchemas.ConstraintSchema.FindIndex(f => f.Name == "constraint_column_names")]; // constraint_column_names | list not null + ListArray columnUsages = (ListArray)constraintsArray.Fields[StandardSchemas.ConstraintSchema.FindIndex(f => f.Name == "constraint_column_usage")]; // constraint_column_usage | list for (int i = 0; i < constraintsArray.Length; i++) { @@ -170,8 +170,8 @@ private static List ParseConstraints(StructArray constraintsArra c.Name = name.GetString(i); c.Type = type.GetString(i); - StringArray colNames = column_names.GetSlicedValues(i) as StringArray; - StructArray usage = column_usage.GetSlicedValues(i) as StructArray; + StringArray colNames = columnNames.GetSlicedValues(i) as StringArray; + StructArray usages = columnUsages.GetSlicedValues(i) as StructArray; if (colNames != null) { @@ -181,14 +181,14 @@ private static List ParseConstraints(StructArray constraintsArra } } - if (usage != null) + if (usages != null) { - for (int j = 0; j < usage.Length; j++) + for (int j = 0; j < usages.Length; j++) { - StringArray fkCatalog = (StringArray)usage.Fields[StandardSchemas.UsageSchema.FindIndex(f => f.Name == "fk_catalog")]; // fk_catalog | utf8 - StringArray fkDbSchema = (StringArray)usage.Fields[StandardSchemas.UsageSchema.FindIndex(f => f.Name == "fk_db_schema")]; //fk_db_schema | utf8 - StringArray fkTable = (StringArray)usage.Fields[StandardSchemas.UsageSchema.FindIndex(f => f.Name == "fk_table")]; // fk_table | utf8 not null - StringArray fkColumnName = (StringArray)usage.Fields[StandardSchemas.UsageSchema.FindIndex(f => f.Name == "fk_column_name")]; // fk_column_name | utf8 not null + StringArray fkCatalog = (StringArray)usages.Fields[StandardSchemas.UsageSchema.FindIndex(f => f.Name == "fk_catalog")]; // fk_catalog | utf8 + StringArray fkDbSchema = (StringArray)usages.Fields[StandardSchemas.UsageSchema.FindIndex(f => f.Name == "fk_db_schema")]; //fk_db_schema | utf8 + StringArray fkTable = (StringArray)usages.Fields[StandardSchemas.UsageSchema.FindIndex(f => f.Name == "fk_table")]; // fk_table | utf8 not null + StringArray fkColumnName = (StringArray)usages.Fields[StandardSchemas.UsageSchema.FindIndex(f => f.Name == "fk_column_name")]; // fk_column_name | utf8 not null AdbcUsageSchema adbcUsageSchema = new AdbcUsageSchema(); adbcUsageSchema.FkCatalog = fkCatalog.GetString(j); diff --git a/go/adbc/driver/internal/shared_utils.go b/go/adbc/driver/internal/shared_utils.go index 4cc841d96f..bdcc56633b 100644 --- a/go/adbc/driver/internal/shared_utils.go +++ b/go/adbc/driver/internal/shared_utils.go @@ -303,46 +303,59 @@ func (g *GetObjects) appendTableInfo(tableInfo TableInfo, catalogAndSchema Catal g.tableTypeBuilder.Append(tableInfo.TableType) g.dbSchemaTablesItems.Append(true) - if len(g.ConstraintLookup) != 0 { - g.tableConstraintsBuilder.Append(true) - - catalogSchemaTable := CatalogSchemaTable{Catalog: catalogAndSchema.Catalog, Schema: catalogAndSchema.Schema, Table: tableInfo.Name} - constraintSchemaData, exists := g.ConstraintLookup[catalogSchemaTable] - - if exists { - for _, data := range constraintSchemaData { - g.constraintNameBuilder.Append(data.ConstraintName) - g.constraintTypeBuilder.Append(data.ConstraintType) - - if len(data.ConstraintColumnNames) == 0 { - g.constraintColumnNameBuilder.AppendNull() - } else { - g.constraintColumnNameBuilder.Append(true) - for _, columnName := range data.ConstraintColumnNames { - g.constraintColumnNameItems.Append(columnName) - } - } + g.appendTableConstraints(tableInfo, catalogAndSchema) + g.appendColumnsInfo(tableInfo) +} - if len(data.ConstraintColumnUsages) == 0 { - g.constraintColumnUsageBuilder.AppendNull() - } else { - g.constraintColumnUsageBuilder.Append(true) - for _, columnUsages := range data.ConstraintColumnUsages { - g.columnUsageCatalogBuilder.Append(columnUsages.ForeignKeyCatalog) - g.columnUsageSchemaBuilder.Append(columnUsages.ForeignKeyDbSchema) - g.columnUsageTableBuilder.Append(columnUsages.ForeignKeyTable) - g.columnUsageColumnBuilder.Append(columnUsages.ForeignKeyColName) - g.constraintColumnUsageItems.Append(true) - } - } +func (g *GetObjects) appendTableConstraints(tableInfo TableInfo, catalogAndSchema CatalogAndSchema) { + if len(g.ConstraintLookup) == 0 { + g.tableConstraintsBuilder.AppendNull() + return + } - g.tableConstraintsItems.Append(true) - } + g.tableConstraintsBuilder.Append(true) + + catalogSchemaTable := CatalogSchemaTable{Catalog: catalogAndSchema.Catalog, Schema: catalogAndSchema.Schema, Table: tableInfo.Name} + constraintSchemaData, exists := g.ConstraintLookup[catalogSchemaTable] + + if exists { + for _, data := range constraintSchemaData { + g.constraintNameBuilder.Append(data.ConstraintName) + g.constraintTypeBuilder.Append(data.ConstraintType) + g.appendConstraintColumns(data) + g.appendConstraintColumnUsages(data) + g.tableConstraintsItems.Append(true) + } + } +} + +func (g *GetObjects) appendConstraintColumns(constraintSchema ConstraintSchema) { + if len(constraintSchema.ConstraintColumnNames) == 0 { + g.constraintColumnNameBuilder.AppendNull() + } else { + g.constraintColumnNameBuilder.Append(true) + for _, columnName := range constraintSchema.ConstraintColumnNames { + g.constraintColumnNameItems.Append(columnName) } + } +} + +func (g *GetObjects) appendConstraintColumnUsages(constraintSchema ConstraintSchema) { + if len(constraintSchema.ConstraintColumnUsages) == 0 { + g.constraintColumnUsageBuilder.AppendNull() } else { - g.tableConstraintsBuilder.AppendNull() + g.constraintColumnUsageBuilder.Append(true) + for _, columnUsages := range constraintSchema.ConstraintColumnUsages { + g.columnUsageCatalogBuilder.Append(columnUsages.ForeignKeyCatalog) + g.columnUsageSchemaBuilder.Append(columnUsages.ForeignKeyDbSchema) + g.columnUsageTableBuilder.Append(columnUsages.ForeignKeyTable) + g.columnUsageColumnBuilder.Append(columnUsages.ForeignKeyColName) + g.constraintColumnUsageItems.Append(true) + } } +} +func (g *GetObjects) appendColumnsInfo(tableInfo TableInfo) { if g.Depth == adbc.ObjectDepthTables { g.tableColumnsBuilder.AppendNull() return