xborder commented on code in PR #2481:
URL: https://github.com/apache/arrow-adbc/pull/2481#discussion_r1927429985


##########
go/adbc/driver/flightsql/flightsql_adbc_server_test.go:
##########
@@ -2014,72 +2195,114 @@ func (suite *GetObjectsTests) 
TestMetadataGetObjectsColumnsXdbc() {
                                        for tblIdx := tblIdxStart; tblIdx < 
tblIdxEnd; tblIdx++ {
                                                tableName := 
dbSchemaTables.Field(0).(*array.String).Value(int(tblIdx))
 
-                                               if 
strings.EqualFold(schemaName, suite.Quirks.DBSchema()) && 
strings.EqualFold("bulk_ingest", tableName) {
+                                               if 
strings.EqualFold(schemaName, suite.schemaName) && 
strings.EqualFold(suite.tableName, tableName) {
                                                        foundExpected = true
 
                                                        colIdxStart, colIdxEnd 
:= tableColumnsList.ValueOffsets(int(tblIdx))
                                                        for colIdx := 
colIdxStart; colIdx < colIdxEnd; colIdx++ {
                                                                name := 
tableColumns.Field(0).(*array.String).Value(int(colIdx))
-                                                               colnames = 
append(colnames, strings.ToLower(name))
+                                                               columnName = 
append(columnName, name)
 
-                                                               pos := 
tableColumns.Field(1).(*array.Int32).Value(int(colIdx))
-                                                               positions = 
append(positions, strconv.Itoa(int(pos)))
+                                                               // pos := 
tableColumns.Field(1).(*array.Int32).Value(int(colIdx))
+                                                               // 
ordinalPosition = append(ordinalPosition, strconv.Itoa(int(pos)))
 
-                                                               comments = 
append(comments, tableColumns.Field(2).(*array.String).Value(int(colIdx)))
+                                                               rm := 
tableColumns.Field(2).(*array.String).Value(int(colIdx))
+                                                               remarks = 
append(remarks, name+"_"+rm)
 
                                                                xdt := 
tableColumns.Field(3).(*array.Int16).Value(int(colIdx))
-                                                               xdbcDataTypes = 
append(xdbcDataTypes, strconv.Itoa(int(xdt)))
+                                                               xdbcDataType = 
append(xdbcDataType, name+"_"+strconv.Itoa(int(xdt)))
 
                                                                dataType := 
tableColumns.Field(4).(*array.String).Value(int(colIdx))
-                                                               dataTypes = 
append(dataTypes, dataType)
-                                                               xdbcTypeNames = 
append(xdbcTypeNames, dataType)
+                                                               xdbcTypeName = 
append(xdbcTypeName, name+"_"+dataType)
 
-                                                               // these are 
column size attributes used for either precision for numbers OR the length for 
text
-                                                               
maxLenOrPrecision := tableColumns.Field(5).(*array.Int32).Value(int(colIdx))
-                                                               xdbcCharMaxLens 
= append(xdbcCharMaxLens, strconv.Itoa(int(maxLenOrPrecision)))
+                                                               columnSize := 
tableColumns.Field(5).(*array.Int32).Value(int(colIdx))
+                                                               xdbcColumnSize 
= append(xdbcColumnSize, name+"_"+strconv.Itoa(int(columnSize)))
 
-                                                               scale := 
tableColumns.Field(6).(*array.Int16).Value(int(colIdx))
-                                                               xdbcScales = 
append(xdbcScales, strconv.Itoa(int(scale)))
+                                                               decimalDigits 
:= tableColumns.Field(6).(*array.Int16).Value(int(colIdx))
+                                                               
xdbcDecimalDigits = append(xdbcDecimalDigits, 
name+"_"+strconv.Itoa(int(decimalDigits)))
 
-                                                               radix := 
tableColumns.Field(7).(*array.Int16).Value(int(colIdx))
-                                                               
xdbcNumPrecRadixs = append(xdbcNumPrecRadixs, strconv.Itoa(int(radix)))
+                                                               numPrecRadix := 
tableColumns.Field(7).(*array.Int16).Value(int(colIdx))
+                                                               
xdbcNumPrecRadix = append(xdbcNumPrecRadix, 
name+"_"+strconv.Itoa(int(numPrecRadix)))
 
-                                                               isnull := 
tableColumns.Field(8).(*array.Int16).Value(int(colIdx))
-                                                               xdbcNullables = 
append(xdbcNullables, strconv.Itoa(int(isnull)))
+                                                               nullable := 
tableColumns.Field(8).(*array.Int16).Value(int(colIdx))
+                                                               xdbcNullable = 
append(xdbcNullable, name+"_"+strconv.Itoa(int(nullable)))
+
+                                                               columnDef := 
tableColumns.Field(9).(*array.String).Value(int(colIdx))
+                                                               xdbcColumnDef = 
append(xdbcColumnDef, name+"_"+columnDef)
 
                                                                sqlType := 
tableColumns.Field(10).(*array.Int16).Value(int(colIdx))
-                                                               
xdbcSqlDataTypes = append(xdbcSqlDataTypes, strconv.Itoa(int(sqlType)))
+                                                               xdbcSqlDataType 
= append(xdbcSqlDataType, name+"_"+strconv.Itoa(int(sqlType)))
 
                                                                dtPrec := 
tableColumns.Field(11).(*array.Int16).Value(int(colIdx))
-                                                               xdbcDateTimeSub 
= append(xdbcSqlDataTypes, strconv.Itoa(int(dtPrec)))
+                                                               xdbcDatetimeSub 
= append(xdbcDatetimeSub, name+"_"+strconv.Itoa(int(dtPrec)))
 
                                                                charOctetLen := 
tableColumns.Field(12).(*array.Int32).Value(int(colIdx))
-                                                               
xdbcCharOctetLen = append(xdbcCharOctetLen, strconv.Itoa(int(charOctetLen)))
+                                                               
xdbcCharOctetLength = append(xdbcCharOctetLength, 
name+"_"+strconv.Itoa(int(charOctetLen)))
+
+                                                               isNullable := 
tableColumns.Field(13).(*array.String).Value(int(colIdx))
+                                                               xdbcIsNullable 
= append(xdbcIsNullable, name+"_"+isNullable)
 
-                                                               xdbcIsNullables 
= append(xdbcIsNullables, 
tableColumns.Field(13).(*array.String).Value(int(colIdx)))
+                                                               scopeCatalog := 
tableColumns.Field(14).(*array.String).Value(int(colIdx))
+                                                               
xdbcScopeCatalog = append(xdbcScopeCatalog, name+"_"+scopeCatalog)
+
+                                                               scopeSchema := 
tableColumns.Field(15).(*array.String).Value(int(colIdx))
+                                                               xdbcScopeSchema 
= append(xdbcScopeSchema, name+"_"+scopeSchema)
+
+                                                               scopeTable := 
tableColumns.Field(16).(*array.String).Value(int(colIdx))
+                                                               xdbcScopeTable 
= append(xdbcScopeTable, name+"_"+scopeTable)
+
+                                                               isAutoIncrement 
:= tableColumns.Field(17).(*array.Boolean).Value(int(colIdx))
+                                                               
xdbcIsAutoincrement = append(xdbcIsAutoincrement, 
name+"_"+strconv.FormatBool(isAutoIncrement))
+
+                                                               isAutoGenerated 
:= tableColumns.Field(18).(*array.Boolean).Value(int(colIdx))
+                                                               
xdbcIsAutogeneratedColumn = append(xdbcIsAutogeneratedColumn, 
name+"_"+strconv.FormatBool(isAutoGenerated))
                                                        }
                                                }
                                        }
                                }
                        }
 
+                       sort.Strings(columnName)
+                       sort.Strings(remarks)
+                       sort.Strings(xdbcDataType)
+                       sort.Strings(xdbcTypeName)
+                       sort.Strings(xdbcColumnSize)
+                       sort.Strings(xdbcDecimalDigits)
+                       sort.Strings(xdbcNumPrecRadix)
+                       sort.Strings(xdbcNullable)
+                       sort.Strings(xdbcColumnDef)
+                       sort.Strings(xdbcSqlDataType)
+                       sort.Strings(xdbcDatetimeSub)
+                       sort.Strings(xdbcCharOctetLength)
+                       sort.Strings(xdbcIsNullable)
+                       sort.Strings(xdbcScopeCatalog)
+                       sort.Strings(xdbcScopeSchema)
+                       sort.Strings(xdbcScopeTable)
+                       sort.Strings(xdbcIsAutoincrement)
+                       sort.Strings(xdbcIsAutogeneratedColumn)
+
                        suite.False(rdr.Next())
                        suite.True(foundExpected)
-                       suite.Equal(tt.colnames, colnames)                  // 
colNames
-                       suite.Equal(tt.positions, positions)                // 
positions
-                       suite.Equal(tt.comments, comments)                  // 
comments
-                       suite.Equal(tt.xdbcDataType, xdbcDataTypes)         // 
xdbcDataType
-                       suite.Equal(tt.dataTypes, dataTypes)                // 
dataTypes
-                       suite.Equal(tt.xdbcTypeName, xdbcTypeNames)         // 
xdbcTypeName
-                       suite.Equal(tt.xdbcCharMaxLen, xdbcCharMaxLens)     // 
xdbcCharMaxLen
-                       suite.Equal(tt.xdbcScale, xdbcScales)               // 
xdbcScale
-                       suite.Equal(tt.xdbcNumPrecRadix, xdbcNumPrecRadixs) // 
xdbcNumPrecRadix
-                       suite.Equal(tt.xdbcNullable, xdbcNullables)         // 
xdbcNullable
-                       suite.Equal(tt.xdbcSqlDataType, xdbcSqlDataTypes)   // 
xdbcSqlDataType
-                       suite.Equal(tt.xdbcDateTimeSub, xdbcDateTimeSub)    // 
xdbcDateTimeSub
-                       suite.Equal(tt.xdbcCharOctetLen, xdbcCharOctetLen)  // 
xdbcCharOctetLen
-                       suite.Equal(tt.xdbcIsNullable, xdbcIsNullables)     // 
xdbcIsNullable
 
+                       suite.Equal(tt.columnName, columnName, "columnName")
+                       //suite.Equal(tt.ordinalPosition, ordinalPosition, 
"ordinalPosition")

Review Comment:
   Good question. The ordinal position is set based on the order in which the 
columns are processed unless there's a metadata key `ORDINAL_POSITION`. 
   While writing the test I realized that even tho the schema is built always 
in the same order, the deserialization would (sometimes) cause columns to be in 
different order. I couldn't exactly understand the issue (if it even is an 
issue).
   
   To work around this, I ignored the ordinal position (flight doesn't even set 
`ORDINAL_POSITION`) and appended the name of the columns being processed to 
every fields



-- 
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]

Reply via email to