From f14c35935df477463015318f34c5d7067d2f6e0a Mon Sep 17 00:00:00 2001 From: Stephen Afam-Osemene Date: Tue, 4 Apr 2023 23:47:03 +0200 Subject: [PATCH] Do not mark auto increment columns as generated in SQLite driver --- gen/bobgen-sqlite/driver/sqlite.go | 2 +- gen/bobgen-sqlite/driver/sqlite.golden.json | 78 ++++++++++++++++++--- gen/bobgen-sqlite/driver/testdb.sql | 3 +- 3 files changed, 73 insertions(+), 10 deletions(-) diff --git a/gen/bobgen-sqlite/driver/sqlite.go b/gen/bobgen-sqlite/driver/sqlite.go index 6a32f11f..bd294bc4 100644 --- a/gen/bobgen-sqlite/driver/sqlite.go +++ b/gen/bobgen-sqlite/driver/sqlite.go @@ -219,7 +219,7 @@ func (d driver) columns(ctx context.Context, schema, tableName string, tinfo []i autoIncr := isPrimaryKeyInteger && (tableHasAutoIncr || nPkeys == 1) // See: https://github.com/sqlite/sqlite/blob/91f621531dc1cb9ba5f6a47eb51b1de9ed8bdd07/src/pragma.c#L1165 - column.Generated = autoIncr || colInfo.Hidden == 2 || colInfo.Hidden == 3 + column.Generated = colInfo.Hidden == 2 || colInfo.Hidden == 3 if colInfo.DefaultValue.Valid { column.Default = colInfo.DefaultValue.String diff --git a/gen/bobgen-sqlite/driver/sqlite.golden.json b/gen/bobgen-sqlite/driver/sqlite.golden.json index bbef9c0c..ac7a64c5 100644 --- a/gen/bobgen-sqlite/driver/sqlite.golden.json +++ b/gen/bobgen-sqlite/driver/sqlite.golden.json @@ -11,7 +11,7 @@ "default": "auto_increment", "comment": "", "nullable": false, - "generated": true, + "generated": false, "autoincr": false, "domain_name": "", "type": "int64", @@ -143,7 +143,7 @@ "default": "auto_increment", "comment": "", "nullable": false, - "generated": true, + "generated": false, "autoincr": false, "domain_name": "", "type": "int64", @@ -156,10 +156,47 @@ "id" ] }, - "foreign_keys": [], + "foreign_keys": [ + { + "name": "fk_autoinctest_0", + "columns": [ + "id" + ], + "foreign_table": "tags", + "foreign_columns": [ + "id" + ] + } + ], "unique": [], "is_join_table": false, - "relationship": null + "relationship": [ + { + "Name": "fk_autoinctest_0", + "ByJoinTable": false, + "Sides": [ + { + "From": "autoinctest", + "To": "tags", + "Columns": null, + "FromColumns": [ + "id" + ], + "ToColumns": [ + "id" + ], + "FromWhere": null, + "ToWhere": null, + "ToKey": false, + "ToUnique": true, + "KeyNullable": false + } + ], + "Ignored": false, + "NoReverse": false, + "Alias": "" + } + ] }, { "key": "has_generated_columns", @@ -172,7 +209,7 @@ "default": "auto_increment", "comment": "", "nullable": false, - "generated": true, + "generated": false, "autoincr": false, "domain_name": "", "type": "int64", @@ -249,7 +286,7 @@ "default": "auto_increment", "comment": "", "nullable": false, - "generated": true, + "generated": false, "autoincr": false, "domain_name": "", "type": "int64", @@ -326,7 +363,7 @@ "default": "auto_increment", "comment": "", "nullable": false, - "generated": true, + "generated": false, "autoincr": false, "domain_name": "", "type": "int64", @@ -367,7 +404,7 @@ "default": "auto_increment", "comment": "", "nullable": false, - "generated": true, + "generated": false, "autoincr": false, "domain_name": "", "type": "int64", @@ -951,6 +988,31 @@ "unique": [], "is_join_table": false, "relationship": [ + { + "Name": "fk_autoinctest_0", + "ByJoinTable": false, + "Sides": [ + { + "From": "tags", + "To": "autoinctest", + "Columns": null, + "FromColumns": [ + "id" + ], + "ToColumns": [ + "id" + ], + "FromWhere": null, + "ToWhere": null, + "ToKey": true, + "ToUnique": true, + "KeyNullable": false + } + ], + "Ignored": false, + "NoReverse": false, + "Alias": "" + }, { "Name": "fk_video_tags_0", "ByJoinTable": false, diff --git a/gen/bobgen-sqlite/driver/testdb.sql b/gen/bobgen-sqlite/driver/testdb.sql index a1328748..2d371e0c 100644 --- a/gen/bobgen-sqlite/driver/testdb.sql +++ b/gen/bobgen-sqlite/driver/testdb.sql @@ -162,7 +162,8 @@ create table type_monsters ( -- all table defintions will not cause sqlite autoincrement primary key without rowid tables to be generated create table autoinctest ( - id INTEGER PRIMARY KEY NOT NULL + id INTEGER PRIMARY KEY NOT NULL, + FOREIGN KEY (id) REFERENCES tags (id) -- causes make sure id is included in getter ); -- additional fields should not be marked as auto generated, when the AUTOINCREMENT keyword is present