Browse Source

foreign_keys must be enabled OUTSIDE of a transaction

default_compile_flags
vector-of-bool 4 years ago
parent
commit
5f57cca29e
2 changed files with 4 additions and 2 deletions
  1. +2
    -1
      src/dds/catalog/catalog.cpp
  2. +2
    -1
      src/dds/db/database.cpp

+ 2
- 1
src/dds/catalog/catalog.cpp View File

} }


void ensure_migrated(nsql::database& db) { void ensure_migrated(nsql::database& db) {
nsql::transaction_guard tr{db};
db.exec(R"( db.exec(R"(
PRAGMA foreign_keys = 1; PRAGMA foreign_keys = 1;
CREATE TABLE IF NOT EXISTS dds_cat_meta AS CREATE TABLE IF NOT EXISTS dds_cat_meta AS
WITH init(meta) AS (VALUES ('{"version": 0}')) WITH init(meta) AS (VALUES ('{"version": 0}'))
SELECT * FROM init; SELECT * FROM init;
)"); )");
nsql::transaction_guard tr{db};

auto meta_st = db.prepare("SELECT meta FROM dds_cat_meta"); auto meta_st = db.prepare("SELECT meta FROM dds_cat_meta");
auto [meta_json] = nsql::unpack_single<std::string>(meta_st); auto [meta_json] = nsql::unpack_single<std::string>(meta_st);



+ 2
- 1
src/dds/db/database.cpp View File

} }


void ensure_migrated(nsql::database& db) { void ensure_migrated(nsql::database& db) {
nsql::transaction_guard tr{db};
db.exec(R"( db.exec(R"(
PRAGMA foreign_keys = 1; PRAGMA foreign_keys = 1;
CREATE TABLE IF NOT EXISTS dds_meta AS CREATE TABLE IF NOT EXISTS dds_meta AS
WITH init (meta) AS (VALUES ('{"version": 0}')) WITH init (meta) AS (VALUES ('{"version": 0}'))
SELECT * FROM init; SELECT * FROM init;
)"); )");
nsql::transaction_guard tr{db};

auto meta_st = db.prepare("SELECT meta FROM dds_meta"); auto meta_st = db.prepare("SELECT meta FROM dds_meta");
auto [meta_json] = nsql::unpack_single<std::string>(meta_st); auto [meta_json] = nsql::unpack_single<std::string>(meta_st);



Loading…
Cancel
Save