Quellcode durchsuchen

Merge pull request #359 from go-sql-driver/columnsWithAlias

columnsWithAlias: Only prepend table name if not empty
Julien Schmidt vor 10 Jahren
Ursprung
Commit
3dd7008ac1
2 geänderte Dateien mit 29 neuen und 1 gelöschten Zeilen
  1. 24 0
      driver_test.go
  2. 5 1
      rows.go

+ 24 - 0
driver_test.go

@@ -1246,6 +1246,30 @@ func TestCollation(t *testing.T) {
 	}
 }
 
+func TestColumnsWithAlias(t *testing.T) {
+	runTests(t, dsn+"&columnsWithAlias=true", func(dbt *DBTest) {
+		rows := dbt.mustQuery("SELECT 1 AS A")
+		defer rows.Close()
+		cols, _ := rows.Columns()
+		if len(cols) != 1 {
+			t.Fatalf("expected 1 column, got %d", len(cols))
+		}
+		if cols[0] != "A" {
+			t.Fatalf("expected column name \"A\", got \"%s\"", cols[0])
+		}
+		rows.Close()
+
+		rows = dbt.mustQuery("SELECT * FROM (SELECT 1 AS one) AS A")
+		cols, _ = rows.Columns()
+		if len(cols) != 1 {
+			t.Fatalf("expected 1 column, got %d", len(cols))
+		}
+		if cols[0] != "A.one" {
+			t.Fatalf("expected column name \"A.one\", got \"%s\"", cols[0])
+		}
+	})
+}
+
 func TestRawBytesResultExceedsBuffer(t *testing.T) {
 	runTests(t, dsn, func(dbt *DBTest) {
 		// defaultBufSize from buffer.go

+ 5 - 1
rows.go

@@ -40,7 +40,11 @@ func (rows *mysqlRows) Columns() []string {
 	columns := make([]string, len(rows.columns))
 	if rows.mc.cfg.columnsWithAlias {
 		for i := range columns {
-			columns[i] = rows.columns[i].tableName + "." + rows.columns[i].name
+			if tableName := rows.columns[i].tableName; len(tableName) > 0 {
+				columns[i] = tableName + "." + rows.columns[i].name
+			} else {
+				columns[i] = rows.columns[i].name
+			}
 		}
 	} else {
 		for i := range columns {