in arrow/internal/flight_integration/scenario.go [1452:1637]
func (m *flightSqlScenarioTester) ValidateMetadataRetrieval(client *flightsql.Client) error {
var (
catalog = "catalog"
dbSchemaFilterPattern = "db_schema_filter_pattern"
tableFilterPattern = "table_filter_pattern"
table = "table"
dbSchema = "db_schema"
tableTypes = []string{"table", "view"}
ref = flightsql.TableRef{Catalog: &catalog, DBSchema: &dbSchema, Table: table}
pkRef = flightsql.TableRef{Catalog: proto.String("pk_catalog"), DBSchema: proto.String("pk_db_schema"), Table: "pk_table"}
fkRef = flightsql.TableRef{Catalog: proto.String("fk_catalog"), DBSchema: proto.String("fk_db_schema"), Table: "fk_table"}
ctx = context.Background()
)
info, err := client.GetCatalogs(ctx)
if err != nil {
return err
}
if err := m.validate(schema_ref.Catalogs, info, client); err != nil {
return err
}
schema, err := client.GetCatalogsSchema(ctx)
if err != nil {
return err
}
if err := m.validateSchema(schema_ref.Catalogs, schema); err != nil {
return err
}
info, err = client.GetDBSchemas(ctx, &flightsql.GetDBSchemasOpts{Catalog: &catalog, DbSchemaFilterPattern: &dbSchemaFilterPattern})
if err != nil {
return err
}
if err = m.validate(schema_ref.DBSchemas, info, client); err != nil {
return err
}
schema, err = client.GetDBSchemasSchema(ctx)
if err != nil {
return err
}
if err = m.validateSchema(schema_ref.DBSchemas, schema); err != nil {
return err
}
info, err = client.GetTables(ctx, &flightsql.GetTablesOpts{Catalog: &catalog, DbSchemaFilterPattern: &dbSchemaFilterPattern, TableNameFilterPattern: &tableFilterPattern, IncludeSchema: true, TableTypes: tableTypes})
if err != nil {
return err
}
if err = m.validate(schema_ref.TablesWithIncludedSchema, info, client); err != nil {
return err
}
schema, err = client.GetTablesSchema(ctx, &flightsql.GetTablesOpts{IncludeSchema: true})
if err != nil {
return err
}
if err = m.validateSchema(schema_ref.TablesWithIncludedSchema, schema); err != nil {
return err
}
schema, err = client.GetTablesSchema(ctx, &flightsql.GetTablesOpts{IncludeSchema: false})
if err != nil {
return err
}
if err = m.validateSchema(schema_ref.Tables, schema); err != nil {
return err
}
info, err = client.GetTableTypes(ctx)
if err != nil {
return err
}
if err = m.validate(schema_ref.TableTypes, info, client); err != nil {
return err
}
schema, err = client.GetTableTypesSchema(ctx)
if err != nil {
return err
}
if err = m.validateSchema(schema_ref.TableTypes, schema); err != nil {
return err
}
info, err = client.GetPrimaryKeys(ctx, ref)
if err != nil {
return err
}
if err = m.validate(schema_ref.PrimaryKeys, info, client); err != nil {
return err
}
schema, err = client.GetPrimaryKeysSchema(ctx)
if err != nil {
return err
}
if err = m.validateSchema(schema_ref.PrimaryKeys, schema); err != nil {
return err
}
info, err = client.GetExportedKeys(ctx, ref)
if err != nil {
return err
}
if err = m.validate(schema_ref.ExportedKeys, info, client); err != nil {
return err
}
schema, err = client.GetExportedKeysSchema(ctx)
if err != nil {
return err
}
if err = m.validateSchema(schema_ref.ExportedKeys, schema); err != nil {
return err
}
info, err = client.GetImportedKeys(ctx, ref)
if err != nil {
return err
}
if err = m.validate(schema_ref.ImportedKeys, info, client); err != nil {
return err
}
schema, err = client.GetImportedKeysSchema(ctx)
if err != nil {
return err
}
if err = m.validateSchema(schema_ref.ImportedKeys, schema); err != nil {
return err
}
info, err = client.GetCrossReference(ctx, pkRef, fkRef)
if err != nil {
return err
}
if err = m.validate(schema_ref.CrossReference, info, client); err != nil {
return err
}
schema, err = client.GetCrossReferenceSchema(ctx)
if err != nil {
return err
}
if err = m.validateSchema(schema_ref.CrossReference, schema); err != nil {
return err
}
info, err = client.GetXdbcTypeInfo(ctx, nil)
if err != nil {
return err
}
if err = m.validate(schema_ref.XdbcTypeInfo, info, client); err != nil {
return err
}
schema, err = client.GetXdbcTypeInfoSchema(ctx)
if err != nil {
return err
}
if err = m.validateSchema(schema_ref.XdbcTypeInfo, schema); err != nil {
return err
}
info, err = client.GetSqlInfo(ctx, []flightsql.SqlInfo{flightsql.SqlInfoFlightSqlServerName, flightsql.SqlInfoFlightSqlServerReadOnly})
if err != nil {
return err
}
if err = m.validate(schema_ref.SqlInfo, info, client); err != nil {
return err
}
schema, err = client.GetSqlInfoSchema(ctx)
if err != nil {
return err
}
if err = m.validateSchema(schema_ref.SqlInfo, schema); err != nil {
return err
}
return nil
}