diff --git a/generator/metadata/column_meta_data.go b/generator/metadata/column_meta_data.go index 74184b68..5cd02745 100644 --- a/generator/metadata/column_meta_data.go +++ b/generator/metadata/column_meta_data.go @@ -5,6 +5,7 @@ type Column struct { Name string IsPrimaryKey bool IsNullable bool + IsGenerated bool DataType DataType } diff --git a/generator/metadata/table_meta_data.go b/generator/metadata/table_meta_data.go index 6479dc20..2e01c61a 100644 --- a/generator/metadata/table_meta_data.go +++ b/generator/metadata/table_meta_data.go @@ -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 } diff --git a/generator/postgres/query_set.go b/generator/postgres/query_set.go index 16c1275c..834b2c57 100644 --- a/generator/postgres/query_set.go +++ b/generator/postgres/query_set.go @@ -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", diff --git a/tests/Makefile b/tests/Makefile index 1a847786..eaccf758 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -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 diff --git a/tests/init/init.go b/tests/init/init.go index 633457e8..f4041a0a 100644 --- a/tests/init/init.go +++ b/tests/init/init.go @@ -134,6 +134,7 @@ func initPostgresDB(dbType string, connectionString string) { "test_sample", "chinook", "chinook2", + "test_generated", } for _, schemaName := range schemaNames { diff --git a/tests/postgres/generated_test.go b/tests/postgres/generated_test.go new file mode 100644 index 00000000..f05b6728 --- /dev/null +++ b/tests/postgres/generated_test.go @@ -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]) + }) +}