Merge pull request #560 from go-jet/cdb-cmt-test
Add cockroachdb table comments test.
This commit is contained in:
commit
7b56e1a621
5 changed files with 82 additions and 31 deletions
|
|
@ -24,13 +24,11 @@ import (
|
|||
"github.com/go-jet/jet/v2/tests/testdata/results/common"
|
||||
)
|
||||
|
||||
var AllTypesAllColumns = AllTypes.AllColumns.
|
||||
Except(IntegerColumn("rowid")) // cockroachDB: exclude rowid column
|
||||
|
||||
func TestAllTypesSelect(t *testing.T) {
|
||||
var dest []model.AllTypes
|
||||
|
||||
err := AllTypes.SELECT(AllTypesAllColumns).
|
||||
err := SELECT(AllTypes.AllColumns).
|
||||
FROM(AllTypes).
|
||||
LIMIT(2).
|
||||
Query(db, &dest)
|
||||
|
||||
|
|
@ -42,7 +40,7 @@ func TestAllTypesSelect(t *testing.T) {
|
|||
func TestAllTypesSelectJson(t *testing.T) {
|
||||
|
||||
stmt := SELECT_JSON_ARR(
|
||||
AllTypesAllColumns.Except(
|
||||
AllTypes.AllColumns.Except(
|
||||
AllTypes.JSON, AllTypes.JSONPtr,
|
||||
AllTypes.Jsonb, AllTypes.JsonbPtr,
|
||||
AllTypes.JsonbArray,
|
||||
|
|
@ -203,9 +201,14 @@ func TestMaterializedViewAllTypes(t *testing.T) {
|
|||
func TestAllTypesInsertModel(t *testing.T) {
|
||||
skipForPgxDriver(t) // pgx driver bug ERROR: date/time field value out of range: "0000-01-01 12:05:06Z" (SQLSTATE 22008)
|
||||
|
||||
query := AllTypes.INSERT(AllTypesAllColumns).
|
||||
MODEL(allTypesRow0).
|
||||
MODEL(&allTypesRow1).
|
||||
row0 := testutils.DeepCopy(t, allTypesRow0)
|
||||
row0.Serial = 10
|
||||
row1 := testutils.DeepCopy(t, allTypesRow1)
|
||||
row1.Serial = 11
|
||||
|
||||
query := AllTypes.INSERT(AllTypes.AllColumns).
|
||||
MODEL(row0).
|
||||
MODEL(&row1).
|
||||
RETURNING(AllTypes.AllColumns)
|
||||
|
||||
testutils.ExecuteInTxAndRollback(t, db, func(tx qrm.DB) {
|
||||
|
|
@ -217,19 +220,19 @@ func TestAllTypesInsertModel(t *testing.T) {
|
|||
return
|
||||
}
|
||||
require.Equal(t, len(dest), 2)
|
||||
testutils.AssertDeepEqual(t, dest[0], allTypesRow0)
|
||||
testutils.AssertDeepEqual(t, dest[1], allTypesRow1)
|
||||
testutils.AssertDeepEqual(t, dest[0], row0)
|
||||
testutils.AssertDeepEqual(t, dest[1], row1)
|
||||
})
|
||||
}
|
||||
|
||||
func TestAllTypesInsertQuery(t *testing.T) {
|
||||
query := AllTypes.INSERT(AllTypesAllColumns).
|
||||
query := AllTypes.INSERT(AllTypes.MutableColumns).
|
||||
QUERY(
|
||||
AllTypes.
|
||||
SELECT(AllTypesAllColumns).
|
||||
SELECT(AllTypes.MutableColumns).
|
||||
LIMIT(2),
|
||||
).
|
||||
RETURNING(AllTypesAllColumns)
|
||||
RETURNING(AllTypes.AllColumns)
|
||||
|
||||
testutils.ExecuteInTxAndRollback(t, db, func(tx qrm.DB) {
|
||||
var dest []model.AllTypes
|
||||
|
|
@ -237,6 +240,8 @@ func TestAllTypesInsertQuery(t *testing.T) {
|
|||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(dest), 2)
|
||||
dest[0].Serial = allTypesRow0.Serial
|
||||
dest[1].Serial = allTypesRow1.Serial
|
||||
testutils.AssertDeepEqual(t, dest[0], allTypesRow0)
|
||||
testutils.AssertDeepEqual(t, dest[1], allTypesRow1)
|
||||
})
|
||||
|
|
@ -319,7 +324,7 @@ WHERE all_types.bytea_ptr = $1::bytea;
|
|||
}
|
||||
|
||||
func TestAllTypesFromSubQuery(t *testing.T) {
|
||||
subQuery := SELECT(AllTypesAllColumns).
|
||||
subQuery := SELECT(AllTypes.AllColumns).
|
||||
FROM(AllTypes).
|
||||
AsTable("allTypesSubQuery")
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import (
|
|||
"reflect"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
|
@ -752,8 +753,6 @@ func UseSchema(schema string) {
|
|||
`
|
||||
|
||||
func TestGeneratedAllTypesSQLBuilderFiles(t *testing.T) {
|
||||
skipForCockroachDB(t) // because of rowid column
|
||||
|
||||
enumDir := filepath.Join(testRoot, "/.gentestdata/jetdb/test_sample/enum/")
|
||||
modelDir := filepath.Join(testRoot, "/.gentestdata/jetdb/test_sample/model/")
|
||||
tableDir := filepath.Join(testRoot, "/.gentestdata/jetdb/test_sample/table/")
|
||||
|
|
@ -761,19 +760,56 @@ func TestGeneratedAllTypesSQLBuilderFiles(t *testing.T) {
|
|||
|
||||
testutils.AssertFileNamesEqual(t, enumDir, "mood.go", "level.go")
|
||||
testutils.AssertFileContent(t, enumDir+"/mood.go", moodEnumContent)
|
||||
testutils.AssertFileContent(t, enumDir+"/level.go", levelEnumContent)
|
||||
|
||||
testutils.AssertFileNamesEqual(t, modelDir, "all_types.go", "all_types_view.go", "employee.go", "link.go",
|
||||
if sourceIsPostgres() {
|
||||
testutils.AssertFileContent(t, enumDir+"/level.go", levelEnumContent)
|
||||
}
|
||||
|
||||
var cockroachModels = []string{"all_types.go", "all_types_view.go", "employee.go", "link.go",
|
||||
"mood.go", "person.go", "person_phone.go", "weird_names_table.go", "level.go", "user.go", "floats.go", "people.go",
|
||||
"components.go", "vulnerabilities.go", "all_types_materialized_view.go", "sample_ranges.go", "sample_arrays.go")
|
||||
"components.go", "vulnerabilities.go", "all_types_materialized_view.go", "sample_arrays.go"}
|
||||
|
||||
var postgresModels = append(cockroachModels, "sample_ranges.go")
|
||||
|
||||
if sourceIsCockroachDB() {
|
||||
testutils.AssertFileNamesEqual(t, modelDir, cockroachModels...)
|
||||
} else {
|
||||
testutils.AssertFileNamesEqual(t, modelDir, postgresModels...)
|
||||
}
|
||||
|
||||
if sourceIsCockroachDB() {
|
||||
enumFileData, err := os.ReadFile(modelDir + "/all_types.go") // #nosec G304
|
||||
|
||||
require.NoError(t, err)
|
||||
|
||||
r := strings.NewReplacer(
|
||||
"Smallserial int64", "Smallserial int16",
|
||||
"Serial int64", "Serial int32",
|
||||
)
|
||||
|
||||
require.Equal(t, "\n"+r.Replace(string(enumFileData)), allTypesModelContent)
|
||||
} else {
|
||||
testutils.AssertFileContent(t, modelDir+"/all_types.go", allTypesModelContent)
|
||||
}
|
||||
|
||||
testutils.AssertFileContent(t, modelDir+"/link.go", linkModelContent)
|
||||
|
||||
testutils.AssertFileNamesEqual(t, tableDir, "all_types.go", "employee.go", "link.go",
|
||||
var cdbSqlBuilders = []string{"all_types.go", "employee.go", "link.go",
|
||||
"person.go", "person_phone.go", "weird_names_table.go", "user.go", "floats.go", "people.go", "table_use_schema.go",
|
||||
"components.go", "vulnerabilities.go", "sample_ranges.go", "sample_arrays.go")
|
||||
"components.go", "vulnerabilities.go", "sample_arrays.go"}
|
||||
var postgresSqlBuilders = append(cdbSqlBuilders, "sample_ranges.go")
|
||||
|
||||
if sourceIsCockroachDB() {
|
||||
testutils.AssertFileNamesEqual(t, tableDir, cdbSqlBuilders...)
|
||||
} else {
|
||||
testutils.AssertFileNamesEqual(t, tableDir, postgresSqlBuilders...)
|
||||
}
|
||||
|
||||
testutils.AssertFileContent(t, tableDir+"/all_types.go", allTypesTableContent)
|
||||
|
||||
if sourceIsPostgres() {
|
||||
testutils.AssertFileContent(t, tableDir+"/sample_ranges.go", sampleRangeTableContent)
|
||||
}
|
||||
|
||||
testutils.AssertFileContent(t, tableDir+"/link.go", linkTableContent)
|
||||
|
||||
|
|
@ -864,7 +900,7 @@ type AllTypes struct {
|
|||
DoublePrecisionPtr *float64
|
||||
DoublePrecision float64
|
||||
Smallserial int16
|
||||
Serial int32
|
||||
Serial int32 ` + "`sql:\"primary_key\"`" + `
|
||||
Bigserial int64
|
||||
VarCharPtr *string
|
||||
VarChar string
|
||||
|
|
@ -1122,7 +1158,7 @@ func newAllTypesTableImpl(schemaName, tableName, alias string) allTypesTable {
|
|||
MoodPtrColumn = postgres.StringColumn("mood_ptr")
|
||||
MoodColumn = postgres.StringColumn("mood")
|
||||
allColumns = postgres.ColumnList{SmallIntPtrColumn, SmallIntColumn, IntegerPtrColumn, IntegerColumn, BigIntPtrColumn, BigIntColumn, DecimalPtrColumn, DecimalColumn, NumericPtrColumn, NumericColumn, RealPtrColumn, RealColumn, DoublePrecisionPtrColumn, DoublePrecisionColumn, SmallserialColumn, SerialColumn, BigserialColumn, VarCharPtrColumn, VarCharColumn, CharPtrColumn, CharColumn, TextPtrColumn, TextColumn, ByteaPtrColumn, ByteaColumn, TimestampzPtrColumn, TimestampzColumn, TimestampPtrColumn, TimestampColumn, DatePtrColumn, DateColumn, TimezPtrColumn, TimezColumn, TimePtrColumn, TimeColumn, IntervalPtrColumn, IntervalColumn, BooleanPtrColumn, BooleanColumn, PointPtrColumn, BitPtrColumn, BitColumn, BitVaryingPtrColumn, BitVaryingColumn, TsvectorPtrColumn, TsvectorColumn, UUIDPtrColumn, UUIDColumn, XMLPtrColumn, XMLColumn, JSONPtrColumn, JSONColumn, JsonbPtrColumn, JsonbColumn, IntegerArrayPtrColumn, IntegerArrayColumn, TextArrayPtrColumn, TextArrayColumn, JsonbArrayColumn, TextMultiDimArrayPtrColumn, TextMultiDimArrayColumn, MoodPtrColumn, MoodColumn}
|
||||
mutableColumns = postgres.ColumnList{SmallIntPtrColumn, SmallIntColumn, IntegerPtrColumn, IntegerColumn, BigIntPtrColumn, BigIntColumn, DecimalPtrColumn, DecimalColumn, NumericPtrColumn, NumericColumn, RealPtrColumn, RealColumn, DoublePrecisionPtrColumn, DoublePrecisionColumn, SmallserialColumn, SerialColumn, BigserialColumn, VarCharPtrColumn, VarCharColumn, CharPtrColumn, CharColumn, TextPtrColumn, TextColumn, ByteaPtrColumn, ByteaColumn, TimestampzPtrColumn, TimestampzColumn, TimestampPtrColumn, TimestampColumn, DatePtrColumn, DateColumn, TimezPtrColumn, TimezColumn, TimePtrColumn, TimeColumn, IntervalPtrColumn, IntervalColumn, BooleanPtrColumn, BooleanColumn, PointPtrColumn, BitPtrColumn, BitColumn, BitVaryingPtrColumn, BitVaryingColumn, TsvectorPtrColumn, TsvectorColumn, UUIDPtrColumn, UUIDColumn, XMLPtrColumn, XMLColumn, JSONPtrColumn, JSONColumn, JsonbPtrColumn, JsonbColumn, IntegerArrayPtrColumn, IntegerArrayColumn, TextArrayPtrColumn, TextArrayColumn, JsonbArrayColumn, TextMultiDimArrayPtrColumn, TextMultiDimArrayColumn, MoodPtrColumn, MoodColumn}
|
||||
mutableColumns = postgres.ColumnList{SmallIntPtrColumn, SmallIntColumn, IntegerPtrColumn, IntegerColumn, BigIntPtrColumn, BigIntColumn, DecimalPtrColumn, DecimalColumn, NumericPtrColumn, NumericColumn, RealPtrColumn, RealColumn, DoublePrecisionPtrColumn, DoublePrecisionColumn, SmallserialColumn, BigserialColumn, VarCharPtrColumn, VarCharColumn, CharPtrColumn, CharColumn, TextPtrColumn, TextColumn, ByteaPtrColumn, ByteaColumn, TimestampzPtrColumn, TimestampzColumn, TimestampPtrColumn, TimestampColumn, DatePtrColumn, DateColumn, TimezPtrColumn, TimezColumn, TimePtrColumn, TimeColumn, IntervalPtrColumn, IntervalColumn, BooleanPtrColumn, BooleanColumn, PointPtrColumn, BitPtrColumn, BitColumn, BitVaryingPtrColumn, BitVaryingColumn, TsvectorPtrColumn, TsvectorColumn, UUIDPtrColumn, UUIDColumn, XMLPtrColumn, XMLColumn, JSONPtrColumn, JSONColumn, JsonbPtrColumn, JsonbColumn, IntegerArrayPtrColumn, IntegerArrayColumn, TextArrayPtrColumn, TextArrayColumn, JsonbArrayColumn, TextMultiDimArrayPtrColumn, TextMultiDimArrayColumn, MoodPtrColumn, MoodColumn}
|
||||
defaultColumns = postgres.ColumnList{SmallIntColumn, IntegerColumn, BigIntColumn, DecimalColumn, NumericColumn, RealColumn, DoublePrecisionColumn, SmallserialColumn, SerialColumn, BigserialColumn, VarCharColumn, CharColumn, TextColumn, ByteaColumn, TimestampzColumn, TimestampColumn, DateColumn, TimezColumn, TimeColumn, IntervalColumn, BooleanColumn, BitColumn, BitVaryingColumn, TsvectorColumn, UUIDColumn, XMLColumn, JSONColumn, JsonbColumn, IntegerArrayColumn, TextArrayColumn, JsonbArrayColumn, TextMultiDimArrayColumn, MoodColumn}
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -5,13 +5,14 @@ import (
|
|||
"database/sql"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"runtime"
|
||||
"testing"
|
||||
|
||||
"github.com/go-jet/jet/v2/qrm"
|
||||
"github.com/go-jet/jet/v2/stmtcache"
|
||||
"github.com/go-jet/jet/v2/tests/internal/utils/repo"
|
||||
"github.com/jackc/pgx/v4/stdlib"
|
||||
"os"
|
||||
"runtime"
|
||||
"testing"
|
||||
|
||||
"github.com/go-jet/jet/v2/postgres"
|
||||
"github.com/go-jet/jet/v2/tests/dbconfig"
|
||||
|
|
@ -31,6 +32,7 @@ var source string
|
|||
var withStatementCaching bool
|
||||
|
||||
const CockroachDB = "COCKROACH_DB"
|
||||
const Postgres = "POSTGRESQL_DB"
|
||||
|
||||
func init() {
|
||||
source = os.Getenv("PG_SOURCE")
|
||||
|
|
@ -42,6 +44,10 @@ func sourceIsCockroachDB() bool {
|
|||
return source == CockroachDB
|
||||
}
|
||||
|
||||
func sourceIsPostgres() bool {
|
||||
return source == Postgres
|
||||
}
|
||||
|
||||
func skipForCockroachDB(t *testing.T) {
|
||||
if sourceIsCockroachDB() {
|
||||
t.SkipNow()
|
||||
|
|
|
|||
|
|
@ -70,7 +70,9 @@ var allTypesJSON = `
|
|||
"Text": "text",
|
||||
"TextPtr": "text-ptr",
|
||||
"Blob": "YmxvYjE=",
|
||||
"BlobPtr": "YmxvYi1wdHI="
|
||||
"BlobPtr": "YmxvYi1wdHI=",
|
||||
"JSON": "{\"key1\": \"value1\", \"key2\": \"value2\"}",
|
||||
"JSONPtr": "{\"key1\": \"value1\", \"key2\": \"value2\"}"
|
||||
},
|
||||
{
|
||||
"Boolean": false,
|
||||
|
|
@ -110,7 +112,9 @@ var allTypesJSON = `
|
|||
"Text": "text",
|
||||
"TextPtr": null,
|
||||
"Blob": "YmxvYjI=",
|
||||
"BlobPtr": null
|
||||
"BlobPtr": null,
|
||||
"JSON": "{\"key1\": \"value1\", \"key2\": \"value2\"}",
|
||||
"JSONPtr": null
|
||||
}
|
||||
]
|
||||
`
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 0387785d9e9ceacba2247d477181436f27bf2068
|
||||
Subproject commit 5003c4883cfcf797a74fe0ed596ad4873908fe3a
|
||||
Loading…
Add table
Add a link
Reference in a new issue