From f9cb22e4b86c0e311e3591ab383fa878530e4431 Mon Sep 17 00:00:00 2001 From: Jack Christensen Date: Fri, 19 May 2017 16:05:30 -0500 Subject: [PATCH] Add driver.RowsColumnTypeDatabaseTypeName support to stdlib.Rows --- stdlib/sql.go | 5 +++++ stdlib/sql_test.go | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/stdlib/sql.go b/stdlib/sql.go index 5fb185d2..ce79edb6 100644 --- a/stdlib/sql.go +++ b/stdlib/sql.go @@ -71,6 +71,7 @@ import ( "errors" "fmt" "io" + "strings" "sync" "github.com/jackc/pgx" @@ -405,6 +406,10 @@ func (r *Rows) Columns() []string { return names } +func (r *Rows) ColumnTypeDatabaseTypeName(index int) string { + return strings.ToUpper(r.rows.FieldDescriptions()[index].DataTypeName) +} + func (r *Rows) Close() error { r.rows.Close() return nil diff --git a/stdlib/sql_test.go b/stdlib/sql_test.go index 83f32ea8..e7db03c9 100644 --- a/stdlib/sql_test.go +++ b/stdlib/sql_test.go @@ -1073,3 +1073,30 @@ func TestConnQueryContextCancel(t *testing.T) { t.Errorf("mock server err: %v", err) } } + +func TestRowsColumnTypeDatabaseTypeName(t *testing.T) { + db := openDB(t) + defer closeDB(t, db) + + rows, err := db.Query("select * from generate_series(1,10) n") + if err != nil { + t.Fatalf("db.Query failed: %v", err) + } + + columnTypes, err := rows.ColumnTypes() + if err != nil { + t.Fatalf("rows.ColumnTypes failed: %v", err) + } + + if len(columnTypes) != 1 { + t.Fatalf("len(columnTypes) => %v, want %v", len(columnTypes), 1) + } + + if columnTypes[0].DatabaseTypeName() != "INT4" { + t.Errorf("columnTypes[0].DatabaseTypeName() => %v, want %v", columnTypes[0].DatabaseTypeName(), "INT4") + } + + rows.Close() + + ensureConnValid(t, db) +}