fix generated columns in mutable columns for PostgreSQL

Fix https://github.com/go-jet/jet/issues/209.
This commit is contained in:
Cedric L'homme 2023-01-30 10:42:06 -05:00
parent ce3c622fa4
commit a4191b4953
6 changed files with 20 additions and 1 deletions

View file

@ -5,6 +5,7 @@ type Column struct {
Name string
IsPrimaryKey bool
IsNullable bool
IsGenerated bool
DataType DataType
}

View file

@ -11,7 +11,7 @@ func (t Table) MutableColumns() []Column {
var ret []Column
for _, column := range t.Columns {
if column.IsPrimaryKey {
if column.IsPrimaryKey || column.IsGenerated {
continue
}

View file

@ -44,6 +44,7 @@ WITH primaryKeys AS (
)
SELECT column_name as "column.Name",
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",
dataType.kind as "dataType.Kind",
(case dataType.Kind when 'base' then data_type else LTRIM(udt_name, '_') end) as "dataType.Name",

View file

@ -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=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_generated -path=./.gentestdata/
jet-gen-mysql:
jet -source=mysql -dsn="jet:jet@tcp(localhost:50902)/dvds" -path=./.gentestdata/mysql

View file

@ -134,6 +134,7 @@ func initPostgresDB(dbType string, connectionString string) {
"test_sample",
"chinook",
"chinook2",
"test_generated",
}
for _, schemaName := range schemaNames {

View 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])
})
}