sqldb: introduce replace for the BIGINT type alias

This commit is contained in:
Andras Banki-Horvath 2023-11-22 17:23:01 +01:00
parent e7d82fa530
commit 3e0f98a75a
No known key found for this signature in database
GPG Key ID: 80E5375C094198D8
2 changed files with 11 additions and 2 deletions

View File

@ -89,7 +89,7 @@ func NewPostgresStore(cfg *PostgresConfig) (*PostgresStore, error) {
// system.
//
// First, we'll need to open up a new migration instance for
// our current target database: sqlite.
// our current target database: Postgres.
driver, err := postgres_migrate.WithInstance(
rawDB, &postgres_migrate.Config{},
)
@ -100,6 +100,7 @@ func NewPostgresStore(cfg *PostgresConfig) (*PostgresStore, error) {
postgresFS := newReplacerFS(sqlSchemas, map[string]string{
"BLOB": "BYTEA",
"INTEGER PRIMARY KEY": "SERIAL PRIMARY KEY",
"BIGINT PRIMARY KEY": "BIGSERIAL PRIMARY KEY",
"TIMESTAMP": "TIMESTAMP WITHOUT TIME ZONE",
})

View File

@ -133,8 +133,16 @@ func NewSqliteStore(cfg *SqliteConfig) (*SqliteStore, error) {
return nil, err
}
// We use INTEGER PRIMARY KEY for sqlite, because it acts as a
// ROWID alias which is 8 bytes big and also autoincrements.
// It's important to use the ROWID as a primary key because the
// key look ups are almost twice as fast
sqliteFS := newReplacerFS(sqlSchemas, map[string]string{
"BIGINT PRIMARY KEY": "INTEGER PRIMARY KEY",
})
err = applyMigrations(
sqlSchemas, driver, "sqlc/migrations", "sqlc",
sqliteFS, driver, "sqlc/migrations", "sqlc",
)
if err != nil {
return nil, err