fix generated columns in mutable columns for PostgreSQL
Fix https://github.com/go-jet/jet/issues/209.
This commit is contained in:
parent
ce3c622fa4
commit
a4191b4953
6 changed files with 20 additions and 1 deletions
|
|
@ -5,6 +5,7 @@ type Column struct {
|
||||||
Name string
|
Name string
|
||||||
IsPrimaryKey bool
|
IsPrimaryKey bool
|
||||||
IsNullable bool
|
IsNullable bool
|
||||||
|
IsGenerated bool
|
||||||
DataType DataType
|
DataType DataType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ func (t Table) MutableColumns() []Column {
|
||||||
var ret []Column
|
var ret []Column
|
||||||
|
|
||||||
for _, column := range t.Columns {
|
for _, column := range t.Columns {
|
||||||
if column.IsPrimaryKey {
|
if column.IsPrimaryKey || column.IsGenerated {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ WITH primaryKeys AS (
|
||||||
)
|
)
|
||||||
SELECT column_name as "column.Name",
|
SELECT column_name as "column.Name",
|
||||||
is_nullable = 'YES' as "column.isNullable",
|
is_nullable = 'YES' as "column.isNullable",
|
||||||
|
is_generated = 'ALWAYS' as "column.isGenerated",
|
||||||
(EXISTS(SELECT 1 from primaryKeys as pk where pk.column_name = columns.column_name)) as "column.IsPrimaryKey",
|
(EXISTS(SELECT 1 from primaryKeys as pk where pk.column_name = columns.column_name)) as "column.IsPrimaryKey",
|
||||||
dataType.kind as "dataType.Kind",
|
dataType.kind as "dataType.Kind",
|
||||||
(case dataType.Kind when 'base' then data_type else LTRIM(udt_name, '_') end) as "dataType.Name",
|
(case dataType.Kind when 'base' then data_type else LTRIM(udt_name, '_') end) as "dataType.Name",
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@ jet-gen-postgres:
|
||||||
jet -dsn=postgres://jet:jet@localhost:50901/jetdb?sslmode=disable -schema=chinook2 -path=./.gentestdata/
|
jet -dsn=postgres://jet:jet@localhost:50901/jetdb?sslmode=disable -schema=chinook2 -path=./.gentestdata/
|
||||||
jet -dsn=postgres://jet:jet@localhost:50901/jetdb?sslmode=disable -schema=northwind -path=./.gentestdata/
|
jet -dsn=postgres://jet:jet@localhost:50901/jetdb?sslmode=disable -schema=northwind -path=./.gentestdata/
|
||||||
jet -dsn=postgres://jet:jet@localhost:50901/jetdb?sslmode=disable -schema=test_sample -path=./.gentestdata/
|
jet -dsn=postgres://jet:jet@localhost:50901/jetdb?sslmode=disable -schema=test_sample -path=./.gentestdata/
|
||||||
|
jet -dsn=postgres://jet:jet@localhost:50901/jetdb?sslmode=disable -schema=test_generated -path=./.gentestdata/
|
||||||
|
|
||||||
jet-gen-mysql:
|
jet-gen-mysql:
|
||||||
jet -source=mysql -dsn="jet:jet@tcp(localhost:50902)/dvds" -path=./.gentestdata/mysql
|
jet -source=mysql -dsn="jet:jet@tcp(localhost:50902)/dvds" -path=./.gentestdata/mysql
|
||||||
|
|
|
||||||
|
|
@ -134,6 +134,7 @@ func initPostgresDB(dbType string, connectionString string) {
|
||||||
"test_sample",
|
"test_sample",
|
||||||
"chinook",
|
"chinook",
|
||||||
"chinook2",
|
"chinook2",
|
||||||
|
"test_generated",
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, schemaName := range schemaNames {
|
for _, schemaName := range schemaNames {
|
||||||
|
|
|
||||||
15
tests/postgres/generated_test.go
Normal file
15
tests/postgres/generated_test.go
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
package postgres
|
||||||
|
|
||||||
|
import (
|
||||||
|
. "github.com/go-jet/jet/v2/tests/.gentestdata/jetdb/test_generated/table"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestMutableColumnsExcludeGeneratedColumn(t *testing.T) {
|
||||||
|
t.Run("should not have the generated column in mutableColumns", func(t *testing.T) {
|
||||||
|
require.Equal(t, 2, len(People.MutableColumns))
|
||||||
|
require.Equal(t, People.PeopleName, People.MutableColumns[0])
|
||||||
|
require.Equal(t, People.PeopleHeightCm, People.MutableColumns[1])
|
||||||
|
})
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue