mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-15 01:54:14 +02:00
.qetz format 3: one project database (stage D3a)
project.sqlite now holds both what QElectroTech keeps in its project database (the index D2 wrote as index.sqlite) and the document's engineering data, the latter's tables named doc_<name> beside the former's -- element, element_info, link and conductor exist in both (QetContainerDb's SQL names them as before; Database::sql() puts the prefix on). The manifest says format 3, min-reader 3: a format 2 reader would find no tables of its names. Format 2 files, with or without an index.sqlite entry, are read as before: the prefix is found from the file (doc_meta). A .qetz with an index opens from project.sqlite. Measured: the 136-folio f2099 1.8 s, 5.2 MB (the two table sets still overlap: D3b). Checked: tst_qetcontainer with the format 3 names, 34/34; a format 2 file of the last commit opens from its index.sqlite and saves the same; corpus 342: 340 .qetz carry the index in project.sqlite and open from it, saved back = eager = master on all 342. ctest 96/96 with and without QET_LAZY_FOLIOS=1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -170,14 +170,14 @@ private slots:
|
||||
return n;
|
||||
};
|
||||
const QDomNodeList diagrams = original.elementsByTagName(QStringLiteral("diagram"));
|
||||
QCOMPARE(count("folio"), int(diagrams.size()));
|
||||
QCOMPARE(count("element"), int(original.elementsByTagName(QStringLiteral("element")).size())
|
||||
QCOMPARE(count("doc_folio"), int(diagrams.size()));
|
||||
QCOMPARE(count("doc_element"), int(original.elementsByTagName(QStringLiteral("element")).size())
|
||||
- int(original.elementsByTagName(QStringLiteral("collection")).at(0).toElement()
|
||||
.elementsByTagName(QStringLiteral("element")).size()));
|
||||
QCOMPARE(count("element_info"), int(original.elementsByTagName(QStringLiteral("elementInformation")).size()));
|
||||
QCOMPARE(count("link"), int(original.elementsByTagName(QStringLiteral("link_uuid")).size()));
|
||||
QCOMPARE(count("conductor"), int(original.elementsByTagName(QStringLiteral("conductor")).size()));
|
||||
QVERIFY(count("folio_property") + count("project_property") > 0);
|
||||
QCOMPARE(count("doc_element_info"), int(original.elementsByTagName(QStringLiteral("elementInformation")).size()));
|
||||
QCOMPARE(count("doc_link"), int(original.elementsByTagName(QStringLiteral("link_uuid")).size()));
|
||||
QCOMPARE(count("doc_conductor"), int(original.elementsByTagName(QStringLiteral("conductor")).size()));
|
||||
QVERIFY(count("doc_folio_property") + count("doc_project_property") > 0);
|
||||
sqlite3_close(db);
|
||||
}
|
||||
|
||||
@@ -285,8 +285,8 @@ private slots:
|
||||
memcpy(copy, e.data.constData(), size_t(e.data.size()));
|
||||
sqlite3_deserialize(db, "main", copy, e.data.size(), e.data.size(),
|
||||
SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_RESIZEABLE);
|
||||
QCOMPARE(sqlite3_exec(db, "ALTER TABLE element RENAME TO element_data;"
|
||||
"CREATE VIEW element AS SELECT * FROM element_data;",
|
||||
QCOMPARE(sqlite3_exec(db, "ALTER TABLE doc_element RENAME TO element_data;"
|
||||
"CREATE VIEW doc_element AS SELECT * FROM element_data;",
|
||||
nullptr, nullptr, nullptr), SQLITE_OK);
|
||||
sqlite3_int64 size = 0;
|
||||
unsigned char *bytes = sqlite3_serialize(db, "main", &size, 0);
|
||||
|
||||
Reference in New Issue
Block a user