Add support for PostgreSQL enum types in PGX datasource (#109863)

This commit is contained in:
Zoltán Bedi
2025-09-05 20:24:54 +02:00
committed by GitHub
parent e2913815d3
commit 8e8c36203f
4 changed files with 87 additions and 8 deletions
@@ -303,7 +303,7 @@ func (e *DataSourceHandler) newProcessCfgPGX(queryContext context.Context, query
case 790:
columnTypesPGX = append(columnTypesPGX, "money")
default:
return nil, fmt.Errorf("unknown data type oid: %d", field.DataTypeOID)
columnTypesPGX = append(columnTypesPGX, "unknown")
}
} else {
columnTypesPGX = append(columnTypesPGX, pqtype.Name)
@@ -426,7 +426,7 @@ func convertResultsToFrame(results []*pgconn.Result, rowLimit int64) (*data.Fram
})
break
}
row := make([]interface{}, len(fieldDescriptions))
row := make([]any, len(fieldDescriptions))
for colIdx, fd := range fieldDescriptions {
rawValue := result.Rows[rowIdx][colIdx]
dataTypeOID := fd.DataTypeOID
@@ -533,12 +533,7 @@ func getFieldTypesFromDescriptions(fieldDescriptions []pgconn.FieldDescription,
for i, v := range fieldDescriptions {
typeName, ok := m.TypeForOID(v.DataTypeOID)
if !ok {
// Handle special cases for field types
if v.DataTypeOID == pgtype.TimetzOID || v.DataTypeOID == 790 {
fieldTypes[i] = data.FieldTypeNullableString
} else {
return nil, fmt.Errorf("unknown data type oid: %d", v.DataTypeOID)
}
fieldTypes[i] = data.FieldTypeNullableString
} else {
switch typeName.Name {
case "int2":