Skip to content

Commit

Permalink
refactor: modularized code and fixed variable naming conventions in C#
Browse files Browse the repository at this point in the history
  • Loading branch information
ryan-syed committed Mar 15, 2024
1 parent a43f8c9 commit ae8086c
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 44 deletions.
20 changes: 10 additions & 10 deletions csharp/test/Apache.Arrow.Adbc.Tests/Metadata/GetObjectsParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -161,17 +161,17 @@ private static List<AdbcConstraint> 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<utf8> not null
ListArray column_usage = (ListArray)constraintsArray.Fields[StandardSchemas.ConstraintSchema.FindIndex(f => f.Name == "constraint_column_usage")]; // constraint_column_usage | list<USAGE_SCHEMA>
ListArray columnNames = (ListArray)constraintsArray.Fields[StandardSchemas.ConstraintSchema.FindIndex(f => f.Name == "constraint_column_names")]; // constraint_column_names | list<utf8> not null
ListArray columnUsages = (ListArray)constraintsArray.Fields[StandardSchemas.ConstraintSchema.FindIndex(f => f.Name == "constraint_column_usage")]; // constraint_column_usage | list<USAGE_SCHEMA>

for (int i = 0; i < constraintsArray.Length; i++)
{
AdbcConstraint c = new AdbcConstraint();
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)
{
Expand All @@ -181,14 +181,14 @@ private static List<AdbcConstraint> 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);
Expand Down
81 changes: 47 additions & 34 deletions go/adbc/driver/internal/shared_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit ae8086c

Please sign in to comment.