summaryrefslogtreecommitdiff
path: root/odb-tests/common/changelog
diff options
context:
space:
mode:
Diffstat (limited to 'odb-tests/common/changelog')
-rw-r--r--odb-tests/common/changelog/.gitignore3
-rw-r--r--odb-tests/common/changelog/add-column-mssql-diff.xml16
-rw-r--r--odb-tests/common/changelog/add-column-mssql-patch.xml13
-rw-r--r--odb-tests/common/changelog/add-column-mysql-diff.xml16
-rw-r--r--odb-tests/common/changelog/add-column-mysql-patch.xml13
-rw-r--r--odb-tests/common/changelog/add-column-oracle-diff.xml16
-rw-r--r--odb-tests/common/changelog/add-column-oracle-patch.xml13
-rw-r--r--odb-tests/common/changelog/add-column-pgsql-diff.xml16
-rw-r--r--odb-tests/common/changelog/add-column-pgsql-patch.xml13
-rw-r--r--odb-tests/common/changelog/add-column-sqlite-diff.xml16
-rw-r--r--odb-tests/common/changelog/add-column-sqlite-patch.xml13
-rw-r--r--odb-tests/common/changelog/add-column.hxx20
-rw-r--r--odb-tests/common/changelog/add-foreign-key-diff.xml28
-rw-r--r--odb-tests/common/changelog/add-foreign-key-mssql-diff.xml28
-rw-r--r--odb-tests/common/changelog/add-foreign-key-mssql-patch.xml25
-rw-r--r--odb-tests/common/changelog/add-foreign-key-mysql-diff.xml28
-rw-r--r--odb-tests/common/changelog/add-foreign-key-mysql-patch.xml25
-rw-r--r--odb-tests/common/changelog/add-foreign-key-oracle-diff.xml28
-rw-r--r--odb-tests/common/changelog/add-foreign-key-oracle-patch.xml25
-rw-r--r--odb-tests/common/changelog/add-foreign-key-pgsql-diff.xml28
-rw-r--r--odb-tests/common/changelog/add-foreign-key-pgsql-patch.xml25
-rw-r--r--odb-tests/common/changelog/add-foreign-key-sqlite-diff.xml28
-rw-r--r--odb-tests/common/changelog/add-foreign-key-sqlite-patch.xml25
-rw-r--r--odb-tests/common/changelog/add-foreign-key.hxx29
-rw-r--r--odb-tests/common/changelog/add-index-mssql-diff.xml21
-rw-r--r--odb-tests/common/changelog/add-index-mssql-patch.xml18
-rw-r--r--odb-tests/common/changelog/add-index-mysql-diff.xml21
-rw-r--r--odb-tests/common/changelog/add-index-mysql-patch.xml18
-rw-r--r--odb-tests/common/changelog/add-index-oracle-diff.xml21
-rw-r--r--odb-tests/common/changelog/add-index-oracle-patch.xml18
-rw-r--r--odb-tests/common/changelog/add-index-pgsql-diff.xml21
-rw-r--r--odb-tests/common/changelog/add-index-pgsql-patch.xml18
-rw-r--r--odb-tests/common/changelog/add-index-sqlite-diff.xml21
-rw-r--r--odb-tests/common/changelog/add-index-sqlite-patch.xml18
-rw-r--r--odb-tests/common/changelog/add-index.hxx24
-rw-r--r--odb-tests/common/changelog/add-table-mssql-diff.xml45
-rw-r--r--odb-tests/common/changelog/add-table-mssql-patch.xml44
-rw-r--r--odb-tests/common/changelog/add-table-mysql-diff.xml45
-rw-r--r--odb-tests/common/changelog/add-table-mysql-patch.xml44
-rw-r--r--odb-tests/common/changelog/add-table-oracle-diff.xml45
-rw-r--r--odb-tests/common/changelog/add-table-oracle-patch.xml44
-rw-r--r--odb-tests/common/changelog/add-table-pgsql-diff.xml45
-rw-r--r--odb-tests/common/changelog/add-table-pgsql-patch.xml44
-rw-r--r--odb-tests/common/changelog/add-table-sqlite-diff.xml45
-rw-r--r--odb-tests/common/changelog/add-table-sqlite-patch.xml44
-rw-r--r--odb-tests/common/changelog/add-table.hxx34
-rw-r--r--odb-tests/common/changelog/alter-column-mssql-diff.xml17
-rw-r--r--odb-tests/common/changelog/alter-column-mssql-patch.xml13
-rw-r--r--odb-tests/common/changelog/alter-column-mysql-diff.xml17
-rw-r--r--odb-tests/common/changelog/alter-column-mysql-patch.xml13
-rw-r--r--odb-tests/common/changelog/alter-column-oracle-diff.xml17
-rw-r--r--odb-tests/common/changelog/alter-column-oracle-patch.xml13
-rw-r--r--odb-tests/common/changelog/alter-column-pgsql-diff.xml17
-rw-r--r--odb-tests/common/changelog/alter-column-pgsql-patch.xml13
-rw-r--r--odb-tests/common/changelog/alter-column-sqlite-diff.xml17
-rw-r--r--odb-tests/common/changelog/alter-column-sqlite-patch.xml13
-rw-r--r--odb-tests/common/changelog/alter-column.hxx21
-rw-r--r--odb-tests/common/changelog/buildfile30
-rw-r--r--odb-tests/common/changelog/drop-column-mssql-diff.xml17
-rw-r--r--odb-tests/common/changelog/drop-column-mssql-patch.xml12
-rw-r--r--odb-tests/common/changelog/drop-column-mysql-diff.xml17
-rw-r--r--odb-tests/common/changelog/drop-column-mysql-patch.xml12
-rw-r--r--odb-tests/common/changelog/drop-column-oracle-diff.xml17
-rw-r--r--odb-tests/common/changelog/drop-column-oracle-patch.xml12
-rw-r--r--odb-tests/common/changelog/drop-column-pgsql-diff.xml17
-rw-r--r--odb-tests/common/changelog/drop-column-pgsql-patch.xml12
-rw-r--r--odb-tests/common/changelog/drop-column-sqlite-diff.xml17
-rw-r--r--odb-tests/common/changelog/drop-column-sqlite-patch.xml12
-rw-r--r--odb-tests/common/changelog/drop-column.hxx20
-rw-r--r--odb-tests/common/changelog/drop-foreign-key-mssql-diff.xml30
-rw-r--r--odb-tests/common/changelog/drop-foreign-key-mssql-patch.xml18
-rw-r--r--odb-tests/common/changelog/drop-foreign-key-mysql-diff.xml30
-rw-r--r--odb-tests/common/changelog/drop-foreign-key-mysql-patch.xml18
-rw-r--r--odb-tests/common/changelog/drop-foreign-key-oracle-diff.xml30
-rw-r--r--odb-tests/common/changelog/drop-foreign-key-oracle-patch.xml18
-rw-r--r--odb-tests/common/changelog/drop-foreign-key-pgsql-diff.xml30
-rw-r--r--odb-tests/common/changelog/drop-foreign-key-pgsql-patch.xml18
-rw-r--r--odb-tests/common/changelog/drop-foreign-key-sqlite-diff.xml30
-rw-r--r--odb-tests/common/changelog/drop-foreign-key-sqlite-patch.xml18
-rw-r--r--odb-tests/common/changelog/drop-foreign-key.hxx29
-rw-r--r--odb-tests/common/changelog/drop-index-mssql-diff.xml20
-rw-r--r--odb-tests/common/changelog/drop-index-mssql-patch.xml13
-rw-r--r--odb-tests/common/changelog/drop-index-mysql-diff.xml20
-rw-r--r--odb-tests/common/changelog/drop-index-mysql-patch.xml13
-rw-r--r--odb-tests/common/changelog/drop-index-oracle-diff.xml20
-rw-r--r--odb-tests/common/changelog/drop-index-oracle-patch.xml13
-rw-r--r--odb-tests/common/changelog/drop-index-pgsql-diff.xml20
-rw-r--r--odb-tests/common/changelog/drop-index-pgsql-patch.xml13
-rw-r--r--odb-tests/common/changelog/drop-index-sqlite-diff.xml20
-rw-r--r--odb-tests/common/changelog/drop-index-sqlite-patch.xml13
-rw-r--r--odb-tests/common/changelog/drop-index.hxx21
-rw-r--r--odb-tests/common/changelog/drop-table-mssql-diff.xml47
-rw-r--r--odb-tests/common/changelog/drop-table-mssql-patch.xml13
-rw-r--r--odb-tests/common/changelog/drop-table-mysql-diff.xml47
-rw-r--r--odb-tests/common/changelog/drop-table-mysql-patch.xml13
-rw-r--r--odb-tests/common/changelog/drop-table-oracle-diff.xml47
-rw-r--r--odb-tests/common/changelog/drop-table-oracle-patch.xml13
-rw-r--r--odb-tests/common/changelog/drop-table-pgsql-diff.xml47
-rw-r--r--odb-tests/common/changelog/drop-table-pgsql-patch.xml13
-rw-r--r--odb-tests/common/changelog/drop-table-sqlite-diff.xml47
-rw-r--r--odb-tests/common/changelog/drop-table-sqlite-patch.xml13
-rw-r--r--odb-tests/common/changelog/drop-table.hxx34
l---------odb-tests/common/changelog/model-mssql-diff.xml1
l---------odb-tests/common/changelog/model-mssql-patch.xml1
-rw-r--r--odb-tests/common/changelog/model-mssql.xml56
l---------odb-tests/common/changelog/model-mysql-diff.xml1
l---------odb-tests/common/changelog/model-mysql-patch.xml1
-rw-r--r--odb-tests/common/changelog/model-mysql.xml56
l---------odb-tests/common/changelog/model-oracle-diff.xml1
l---------odb-tests/common/changelog/model-oracle-patch.xml1
-rw-r--r--odb-tests/common/changelog/model-oracle.xml56
l---------odb-tests/common/changelog/model-pgsql-diff.xml1
l---------odb-tests/common/changelog/model-pgsql-patch.xml1
-rw-r--r--odb-tests/common/changelog/model-pgsql.xml56
l---------odb-tests/common/changelog/model-sqlite-diff.xml1
l---------odb-tests/common/changelog/model-sqlite-patch.xml1
-rw-r--r--odb-tests/common/changelog/model-sqlite.xml56
-rw-r--r--odb-tests/common/changelog/model.hxx46
-rw-r--r--odb-tests/common/changelog/testscript66
119 files changed, 2745 insertions, 0 deletions
diff --git a/odb-tests/common/changelog/.gitignore b/odb-tests/common/changelog/.gitignore
new file mode 100644
index 0000000..5352a2b
--- /dev/null
+++ b/odb-tests/common/changelog/.gitignore
@@ -0,0 +1,3 @@
+# Generate ODB options file.
+#
+odb.options
diff --git a/odb-tests/common/changelog/add-column-mssql-diff.xml b/odb-tests/common/changelog/add-column-mssql-diff.xml
new file mode 100644
index 0000000..4f9ba09
--- /dev/null
+++ b/odb-tests/common/changelog/add-column-mssql-diff.xml
@@ -0,0 +1,16 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="num" type="INT" null="false"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-column-mssql-patch.xml b/odb-tests/common/changelog/add-column-mssql-patch.xml
new file mode 100644
index 0000000..4f396d9
--- /dev/null
+++ b/odb-tests/common/changelog/add-column-mssql-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-column-mysql-diff.xml b/odb-tests/common/changelog/add-column-mysql-diff.xml
new file mode 100644
index 0000000..992306d
--- /dev/null
+++ b/odb-tests/common/changelog/add-column-mysql-diff.xml
@@ -0,0 +1,16 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="num" type="INT" null="false"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-column-mysql-patch.xml b/odb-tests/common/changelog/add-column-mysql-patch.xml
new file mode 100644
index 0000000..14f3f01
--- /dev/null
+++ b/odb-tests/common/changelog/add-column-mysql-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-column-oracle-diff.xml b/odb-tests/common/changelog/add-column-oracle-diff.xml
new file mode 100644
index 0000000..fa1dac6
--- /dev/null
+++ b/odb-tests/common/changelog/add-column-oracle-diff.xml
@@ -0,0 +1,16 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="num" type="NUMBER(10)" null="false"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-column-oracle-patch.xml b/odb-tests/common/changelog/add-column-oracle-patch.xml
new file mode 100644
index 0000000..38fb8d6
--- /dev/null
+++ b/odb-tests/common/changelog/add-column-oracle-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="false"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-column-pgsql-diff.xml b/odb-tests/common/changelog/add-column-pgsql-diff.xml
new file mode 100644
index 0000000..9524d9d
--- /dev/null
+++ b/odb-tests/common/changelog/add-column-pgsql-diff.xml
@@ -0,0 +1,16 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="num" type="INTEGER" null="false"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-column-pgsql-patch.xml b/odb-tests/common/changelog/add-column-pgsql-patch.xml
new file mode 100644
index 0000000..7f7d9a0
--- /dev/null
+++ b/odb-tests/common/changelog/add-column-pgsql-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-column-sqlite-diff.xml b/odb-tests/common/changelog/add-column-sqlite-diff.xml
new file mode 100644
index 0000000..b59cc72
--- /dev/null
+++ b/odb-tests/common/changelog/add-column-sqlite-diff.xml
@@ -0,0 +1,16 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="num" type="INTEGER" null="false"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-column-sqlite-patch.xml b/odb-tests/common/changelog/add-column-sqlite-patch.xml
new file mode 100644
index 0000000..fbe4428
--- /dev/null
+++ b/odb-tests/common/changelog/add-column-sqlite-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-column.hxx b/odb-tests/common/changelog/add-column.hxx
new file mode 100644
index 0000000..54eab42
--- /dev/null
+++ b/odb-tests/common/changelog/add-column.hxx
@@ -0,0 +1,20 @@
+// file : common/changelog/add-column.hxx
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef ADD_COLUMN_HXX
+#define ADD_COLUMN_HXX
+
+#pragma db model version(BVER, CVER, open)
+
+#pragma db object
+struct object
+{
+ #pragma db id auto
+ int id;
+
+#if CVER > 1
+ int num;
+#endif
+};
+
+#endif // ADD_COLUMN_HXX
diff --git a/odb-tests/common/changelog/add-foreign-key-diff.xml b/odb-tests/common/changelog/add-foreign-key-diff.xml
new file mode 100644
index 0000000..d4f29ad
--- /dev/null
+++ b/odb-tests/common/changelog/add-foreign-key-diff.xml
@@ -0,0 +1,28 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="o1" type="INTEGER" null="true"/>
+ <add-foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </add-foreign-key>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-foreign-key-mssql-diff.xml b/odb-tests/common/changelog/add-foreign-key-mssql-diff.xml
new file mode 100644
index 0000000..76ebce3
--- /dev/null
+++ b/odb-tests/common/changelog/add-foreign-key-mssql-diff.xml
@@ -0,0 +1,28 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="o1" type="INT" null="true"/>
+ <add-foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </add-foreign-key>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-foreign-key-mssql-patch.xml b/odb-tests/common/changelog/add-foreign-key-mssql-patch.xml
new file mode 100644
index 0000000..6d75709
--- /dev/null
+++ b/odb-tests/common/changelog/add-foreign-key-mssql-patch.xml
@@ -0,0 +1,25 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="o1" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-foreign-key-mysql-diff.xml b/odb-tests/common/changelog/add-foreign-key-mysql-diff.xml
new file mode 100644
index 0000000..acdfd5b
--- /dev/null
+++ b/odb-tests/common/changelog/add-foreign-key-mysql-diff.xml
@@ -0,0 +1,28 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="o1" type="INT" null="true"/>
+ <add-foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </add-foreign-key>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object1" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-foreign-key-mysql-patch.xml b/odb-tests/common/changelog/add-foreign-key-mysql-patch.xml
new file mode 100644
index 0000000..adc9081
--- /dev/null
+++ b/odb-tests/common/changelog/add-foreign-key-mysql-patch.xml
@@ -0,0 +1,25 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="o1" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object1" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-foreign-key-oracle-diff.xml b/odb-tests/common/changelog/add-foreign-key-oracle-diff.xml
new file mode 100644
index 0000000..6bd8bc3
--- /dev/null
+++ b/odb-tests/common/changelog/add-foreign-key-oracle-diff.xml
@@ -0,0 +1,28 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="o1" type="NUMBER(10)" null="true"/>
+ <add-foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </add-foreign-key>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-foreign-key-oracle-patch.xml b/odb-tests/common/changelog/add-foreign-key-oracle-patch.xml
new file mode 100644
index 0000000..7aa01ea
--- /dev/null
+++ b/odb-tests/common/changelog/add-foreign-key-oracle-patch.xml
@@ -0,0 +1,25 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="o1" type="NUMBER(10)" null="true"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-foreign-key-pgsql-diff.xml b/odb-tests/common/changelog/add-foreign-key-pgsql-diff.xml
new file mode 100644
index 0000000..793b009
--- /dev/null
+++ b/odb-tests/common/changelog/add-foreign-key-pgsql-diff.xml
@@ -0,0 +1,28 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="o1" type="INTEGER" null="true"/>
+ <add-foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </add-foreign-key>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-foreign-key-pgsql-patch.xml b/odb-tests/common/changelog/add-foreign-key-pgsql-patch.xml
new file mode 100644
index 0000000..a256831
--- /dev/null
+++ b/odb-tests/common/changelog/add-foreign-key-pgsql-patch.xml
@@ -0,0 +1,25 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="o1" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-foreign-key-sqlite-diff.xml b/odb-tests/common/changelog/add-foreign-key-sqlite-diff.xml
new file mode 100644
index 0000000..1510470
--- /dev/null
+++ b/odb-tests/common/changelog/add-foreign-key-sqlite-diff.xml
@@ -0,0 +1,28 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="o1" type="INTEGER" null="true"/>
+ <add-foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </add-foreign-key>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-foreign-key-sqlite-patch.xml b/odb-tests/common/changelog/add-foreign-key-sqlite-patch.xml
new file mode 100644
index 0000000..1c2d0ea
--- /dev/null
+++ b/odb-tests/common/changelog/add-foreign-key-sqlite-patch.xml
@@ -0,0 +1,25 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="o1" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-foreign-key.hxx b/odb-tests/common/changelog/add-foreign-key.hxx
new file mode 100644
index 0000000..2a43eea
--- /dev/null
+++ b/odb-tests/common/changelog/add-foreign-key.hxx
@@ -0,0 +1,29 @@
+// file : common/changelog/add-foreign-key.hxx
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef ADD_FOREIGN_KEY_HXX
+#define ADD_FOREIGN_KEY_HXX
+
+#pragma db model version(BVER, CVER, open)
+
+struct object1;
+
+#pragma db object
+struct object
+{
+ #pragma db id auto
+ int id;
+
+#if CVER > 1
+ object1* o1;
+#endif
+};
+
+#pragma db object
+struct object1
+{
+ #pragma db id
+ int id;
+};
+
+#endif // ADD_FOREIGN_KEY_HXX
diff --git a/odb-tests/common/changelog/add-index-mssql-diff.xml b/odb-tests/common/changelog/add-index-mssql-diff.xml
new file mode 100644
index 0000000..58c623f
--- /dev/null
+++ b/odb-tests/common/changelog/add-index-mssql-diff.xml
@@ -0,0 +1,21 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="y" type="INT" null="false"/>
+ <add-index name="xy_i" type="UNIQUE">
+ <column name="x"/>
+ <column name="y" options="DESC"/>
+ </add-index>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="x" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-index-mssql-patch.xml b/odb-tests/common/changelog/add-index-mssql-patch.xml
new file mode 100644
index 0000000..2b10e65
--- /dev/null
+++ b/odb-tests/common/changelog/add-index-mssql-patch.xml
@@ -0,0 +1,18 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="x" type="INT" null="false"/>
+ <column name="y" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <index name="xy_i" type="UNIQUE">
+ <column name="x"/>
+ <column name="y" options="DESC"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-index-mysql-diff.xml b/odb-tests/common/changelog/add-index-mysql-diff.xml
new file mode 100644
index 0000000..a54a7e3
--- /dev/null
+++ b/odb-tests/common/changelog/add-index-mysql-diff.xml
@@ -0,0 +1,21 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="y" type="INT" null="false"/>
+ <add-index name="xy_i" type="UNIQUE">
+ <column name="x"/>
+ <column name="y" options="DESC"/>
+ </add-index>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="x" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-index-mysql-patch.xml b/odb-tests/common/changelog/add-index-mysql-patch.xml
new file mode 100644
index 0000000..a2454b8
--- /dev/null
+++ b/odb-tests/common/changelog/add-index-mysql-patch.xml
@@ -0,0 +1,18 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="x" type="INT" null="false"/>
+ <column name="y" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <index name="xy_i" type="UNIQUE">
+ <column name="x"/>
+ <column name="y" options="DESC"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-index-oracle-diff.xml b/odb-tests/common/changelog/add-index-oracle-diff.xml
new file mode 100644
index 0000000..80f8ecc
--- /dev/null
+++ b/odb-tests/common/changelog/add-index-oracle-diff.xml
@@ -0,0 +1,21 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="y" type="NUMBER(10)" null="false"/>
+ <add-index name="xy_i" type="UNIQUE">
+ <column name="x"/>
+ <column name="y" options="DESC"/>
+ </add-index>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="x" type="NUMBER(10)" null="false"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-index-oracle-patch.xml b/odb-tests/common/changelog/add-index-oracle-patch.xml
new file mode 100644
index 0000000..a9bafea
--- /dev/null
+++ b/odb-tests/common/changelog/add-index-oracle-patch.xml
@@ -0,0 +1,18 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="x" type="NUMBER(10)" null="false"/>
+ <column name="y" type="NUMBER(10)" null="false"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ <index name="xy_i" type="UNIQUE">
+ <column name="x"/>
+ <column name="y" options="DESC"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-index-pgsql-diff.xml b/odb-tests/common/changelog/add-index-pgsql-diff.xml
new file mode 100644
index 0000000..3988643
--- /dev/null
+++ b/odb-tests/common/changelog/add-index-pgsql-diff.xml
@@ -0,0 +1,21 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="y" type="INTEGER" null="false"/>
+ <add-index name="xy_i" type="UNIQUE">
+ <column name="x"/>
+ <column name="y" options="DESC"/>
+ </add-index>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="x" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-index-pgsql-patch.xml b/odb-tests/common/changelog/add-index-pgsql-patch.xml
new file mode 100644
index 0000000..e9c564c
--- /dev/null
+++ b/odb-tests/common/changelog/add-index-pgsql-patch.xml
@@ -0,0 +1,18 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="x" type="INTEGER" null="false"/>
+ <column name="y" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <index name="xy_i" type="UNIQUE">
+ <column name="x"/>
+ <column name="y" options="DESC"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-index-sqlite-diff.xml b/odb-tests/common/changelog/add-index-sqlite-diff.xml
new file mode 100644
index 0000000..c1f7fdc
--- /dev/null
+++ b/odb-tests/common/changelog/add-index-sqlite-diff.xml
@@ -0,0 +1,21 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <add-column name="y" type="INTEGER" null="false"/>
+ <add-index name="xy_i" type="UNIQUE">
+ <column name="x"/>
+ <column name="y" options="DESC"/>
+ </add-index>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="x" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-index-sqlite-patch.xml b/odb-tests/common/changelog/add-index-sqlite-patch.xml
new file mode 100644
index 0000000..b9512e0
--- /dev/null
+++ b/odb-tests/common/changelog/add-index-sqlite-patch.xml
@@ -0,0 +1,18 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="x" type="INTEGER" null="false"/>
+ <column name="y" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <index name="xy_i" type="UNIQUE">
+ <column name="x"/>
+ <column name="y" options="DESC"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-index.hxx b/odb-tests/common/changelog/add-index.hxx
new file mode 100644
index 0000000..645cee2
--- /dev/null
+++ b/odb-tests/common/changelog/add-index.hxx
@@ -0,0 +1,24 @@
+// file : common/changelog/add-index.hxx
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef ADD_INDEX_HXX
+#define ADD_INDEX_HXX
+
+#pragma db model version(BVER, CVER, open)
+
+#pragma db object
+struct object
+{
+ #pragma db id auto
+ int id;
+
+ int x;
+
+#if CVER > 1
+ int y;
+ #pragma db index ("xy_i") unique member(x) member(y, "DESC")
+#endif
+
+};
+
+#endif // ADD_INDEX_HXX
diff --git a/odb-tests/common/changelog/add-table-mssql-diff.xml b/odb-tests/common/changelog/add-table-mssql-diff.xml
new file mode 100644
index 0000000..8bf0e30
--- /dev/null
+++ b/odb-tests/common/changelog/add-table-mssql-diff.xml
@@ -0,0 +1,45 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="2">
+ <add-table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <column name="o1" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </add-table>
+ <add-table name="object_nums" kind="container">
+ <column name="object_id" type="INT" null="false"/>
+ <column name="index" type="BIGINT" null="false"/>
+ <column name="value" type="INT" null="false"/>
+ <foreign-key name="object_nums_object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="index_i">
+ <column name="index"/>
+ </index>
+ </add-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object1" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-table-mssql-patch.xml b/odb-tests/common/changelog/add-table-mssql-patch.xml
new file mode 100644
index 0000000..9dd41f3
--- /dev/null
+++ b/odb-tests/common/changelog/add-table-mssql-patch.xml
@@ -0,0 +1,44 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object1" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <column name="o1" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object_nums" kind="container">
+ <column name="object_id" type="INT" null="false"/>
+ <column name="index" type="BIGINT" null="false"/>
+ <column name="value" type="INT" null="false"/>
+ <foreign-key name="object_nums_object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-table-mysql-diff.xml b/odb-tests/common/changelog/add-table-mysql-diff.xml
new file mode 100644
index 0000000..57f741b
--- /dev/null
+++ b/odb-tests/common/changelog/add-table-mysql-diff.xml
@@ -0,0 +1,45 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="2">
+ <add-table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <column name="o1" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </add-table>
+ <add-table name="object_nums" options="ENGINE=InnoDB" kind="container">
+ <column name="object_id" type="INT" null="false"/>
+ <column name="index" type="BIGINT UNSIGNED" null="false"/>
+ <column name="value" type="INT" null="false"/>
+ <foreign-key name="object_nums_object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="index_i">
+ <column name="index"/>
+ </index>
+ </add-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object1" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-table-mysql-patch.xml b/odb-tests/common/changelog/add-table-mysql-patch.xml
new file mode 100644
index 0000000..0db1e9f
--- /dev/null
+++ b/odb-tests/common/changelog/add-table-mysql-patch.xml
@@ -0,0 +1,44 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object1" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <column name="o1" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object_nums" options="ENGINE=InnoDB" kind="container">
+ <column name="object_id" type="INT" null="false"/>
+ <column name="index" type="BIGINT UNSIGNED" null="false"/>
+ <column name="value" type="INT" null="false"/>
+ <foreign-key name="object_nums_object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-table-oracle-diff.xml b/odb-tests/common/changelog/add-table-oracle-diff.xml
new file mode 100644
index 0000000..70ec7c6
--- /dev/null
+++ b/odb-tests/common/changelog/add-table-oracle-diff.xml
@@ -0,0 +1,45 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="2">
+ <add-table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="false"/>
+ <column name="o1" type="NUMBER(10)" null="true"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </add-table>
+ <add-table name="object_nums" kind="container">
+ <column name="object_id" type="NUMBER(10)" null="false"/>
+ <column name="index" type="NUMBER(20)" null="false"/>
+ <column name="value" type="NUMBER(10)" null="false"/>
+ <foreign-key name="object_nums_object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_nums_object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="object_nums_index_i">
+ <column name="index"/>
+ </index>
+ </add-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object1" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-table-oracle-patch.xml b/odb-tests/common/changelog/add-table-oracle-patch.xml
new file mode 100644
index 0000000..969c2e0
--- /dev/null
+++ b/odb-tests/common/changelog/add-table-oracle-patch.xml
@@ -0,0 +1,44 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object1" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="false"/>
+ <column name="o1" type="NUMBER(10)" null="true"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object_nums" kind="container">
+ <column name="object_id" type="NUMBER(10)" null="false"/>
+ <column name="index" type="NUMBER(20)" null="false"/>
+ <column name="value" type="NUMBER(10)" null="false"/>
+ <foreign-key name="object_nums_object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_nums_object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="object_nums_index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-table-pgsql-diff.xml b/odb-tests/common/changelog/add-table-pgsql-diff.xml
new file mode 100644
index 0000000..9b48062
--- /dev/null
+++ b/odb-tests/common/changelog/add-table-pgsql-diff.xml
@@ -0,0 +1,45 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="2">
+ <add-table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <column name="o1" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </add-table>
+ <add-table name="object_nums" kind="container">
+ <column name="object_id" type="INTEGER" null="false"/>
+ <column name="index" type="BIGINT" null="false"/>
+ <column name="value" type="INTEGER" null="false"/>
+ <foreign-key name="object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_nums_object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="object_nums_index_i">
+ <column name="index"/>
+ </index>
+ </add-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-table-pgsql-patch.xml b/odb-tests/common/changelog/add-table-pgsql-patch.xml
new file mode 100644
index 0000000..b04a933
--- /dev/null
+++ b/odb-tests/common/changelog/add-table-pgsql-patch.xml
@@ -0,0 +1,44 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <column name="o1" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object_nums" kind="container">
+ <column name="object_id" type="INTEGER" null="false"/>
+ <column name="index" type="BIGINT" null="false"/>
+ <column name="value" type="INTEGER" null="false"/>
+ <foreign-key name="object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_nums_object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="object_nums_index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-table-sqlite-diff.xml b/odb-tests/common/changelog/add-table-sqlite-diff.xml
new file mode 100644
index 0000000..573bc69
--- /dev/null
+++ b/odb-tests/common/changelog/add-table-sqlite-diff.xml
@@ -0,0 +1,45 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="2">
+ <add-table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <column name="o1" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </add-table>
+ <add-table name="object_nums" kind="container">
+ <column name="object_id" type="INTEGER" null="false"/>
+ <column name="index" type="INTEGER" null="false"/>
+ <column name="value" type="INTEGER" null="false"/>
+ <foreign-key name="object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_nums_object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="object_nums_index_i">
+ <column name="index"/>
+ </index>
+ </add-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-table-sqlite-patch.xml b/odb-tests/common/changelog/add-table-sqlite-patch.xml
new file mode 100644
index 0000000..3506410
--- /dev/null
+++ b/odb-tests/common/changelog/add-table-sqlite-patch.xml
@@ -0,0 +1,44 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <column name="o1" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object_nums" kind="container">
+ <column name="object_id" type="INTEGER" null="false"/>
+ <column name="index" type="INTEGER" null="false"/>
+ <column name="value" type="INTEGER" null="false"/>
+ <foreign-key name="object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_nums_object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="object_nums_index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/add-table.hxx b/odb-tests/common/changelog/add-table.hxx
new file mode 100644
index 0000000..a22e206
--- /dev/null
+++ b/odb-tests/common/changelog/add-table.hxx
@@ -0,0 +1,34 @@
+// file : common/changelog/add-table.hxx
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef ADD_TABLE_HXX
+#define ADD_TABLE_HXX
+
+#include <vector>
+
+#pragma db model version(BVER, CVER, open)
+
+struct object1;
+
+#if CVER > 1
+#pragma db object
+struct object
+{
+ #pragma db id auto
+ int id;
+ int num;
+
+ std::vector<int> nums;
+ object1* o1;
+};
+#endif
+
+#pragma db object
+struct object1
+{
+ #pragma db id
+ int id;
+ int num;
+};
+
+#endif // ADD_TABLE_HXX
diff --git a/odb-tests/common/changelog/alter-column-mssql-diff.xml b/odb-tests/common/changelog/alter-column-mssql-diff.xml
new file mode 100644
index 0000000..6c1fb6a
--- /dev/null
+++ b/odb-tests/common/changelog/alter-column-mssql-diff.xml
@@ -0,0 +1,17 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <alter-column name="num" null="true"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/alter-column-mssql-patch.xml b/odb-tests/common/changelog/alter-column-mssql-patch.xml
new file mode 100644
index 0000000..15db347
--- /dev/null
+++ b/odb-tests/common/changelog/alter-column-mssql-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/alter-column-mysql-diff.xml b/odb-tests/common/changelog/alter-column-mysql-diff.xml
new file mode 100644
index 0000000..39ad6ef
--- /dev/null
+++ b/odb-tests/common/changelog/alter-column-mysql-diff.xml
@@ -0,0 +1,17 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <alter-column name="num" null="true"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/alter-column-mysql-patch.xml b/odb-tests/common/changelog/alter-column-mysql-patch.xml
new file mode 100644
index 0000000..0131466
--- /dev/null
+++ b/odb-tests/common/changelog/alter-column-mysql-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/alter-column-oracle-diff.xml b/odb-tests/common/changelog/alter-column-oracle-diff.xml
new file mode 100644
index 0000000..d41d333
--- /dev/null
+++ b/odb-tests/common/changelog/alter-column-oracle-diff.xml
@@ -0,0 +1,17 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <alter-column name="num" null="true"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="false"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/alter-column-oracle-patch.xml b/odb-tests/common/changelog/alter-column-oracle-patch.xml
new file mode 100644
index 0000000..0e0794d
--- /dev/null
+++ b/odb-tests/common/changelog/alter-column-oracle-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="true"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/alter-column-pgsql-diff.xml b/odb-tests/common/changelog/alter-column-pgsql-diff.xml
new file mode 100644
index 0000000..fd97fa0
--- /dev/null
+++ b/odb-tests/common/changelog/alter-column-pgsql-diff.xml
@@ -0,0 +1,17 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <alter-column name="num" null="true"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/alter-column-pgsql-patch.xml b/odb-tests/common/changelog/alter-column-pgsql-patch.xml
new file mode 100644
index 0000000..dade1a3
--- /dev/null
+++ b/odb-tests/common/changelog/alter-column-pgsql-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/alter-column-sqlite-diff.xml b/odb-tests/common/changelog/alter-column-sqlite-diff.xml
new file mode 100644
index 0000000..7ecea06
--- /dev/null
+++ b/odb-tests/common/changelog/alter-column-sqlite-diff.xml
@@ -0,0 +1,17 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <alter-column name="num" null="true"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/alter-column-sqlite-patch.xml b/odb-tests/common/changelog/alter-column-sqlite-patch.xml
new file mode 100644
index 0000000..de2762e
--- /dev/null
+++ b/odb-tests/common/changelog/alter-column-sqlite-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/alter-column.hxx b/odb-tests/common/changelog/alter-column.hxx
new file mode 100644
index 0000000..02f091d
--- /dev/null
+++ b/odb-tests/common/changelog/alter-column.hxx
@@ -0,0 +1,21 @@
+// file : common/changelog/alter-column.hxx
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef ALTER_COLUMN_HXX
+#define ALTER_COLUMN_HXX
+
+#pragma db model version(BVER, CVER, open)
+
+#pragma db object
+struct object
+{
+ #pragma db id auto
+ int id;
+
+#if CVER > 1
+ #pragma db null
+#endif
+ int num;
+};
+
+#endif // ALTER_COLUMN_HXX
diff --git a/odb-tests/common/changelog/buildfile b/odb-tests/common/changelog/buildfile
new file mode 100644
index 0000000..04e0685
--- /dev/null
+++ b/odb-tests/common/changelog/buildfile
@@ -0,0 +1,30 @@
+# file : common/changelog/buildfile
+# license : GNU GPL v2; see accompanying LICENSE file
+
+import libodb = libodb%lib{odb}
+
+./: file{odb.options} xml{*} testscript
+
+# Introduce the metadata library target to make sure the libodb library is
+# resolved for the below ad hoc recipe.
+#
+libue{test-meta}: $libodb
+
+file{odb.options}: libue{test-meta}
+{{
+ pops = $cxx.lib_poptions($<[0])
+ depdb hash $pops
+
+ f = $path($>[0])
+ rm -f $f
+
+ for o: $pops
+ echo $o >+$f
+ end
+}}
+
+# Testscript's run-time prerequisites.
+#
+testscript@./: test = $odb
+
+./: $odb: clean = false
diff --git a/odb-tests/common/changelog/drop-column-mssql-diff.xml b/odb-tests/common/changelog/drop-column-mssql-diff.xml
new file mode 100644
index 0000000..f2bab96
--- /dev/null
+++ b/odb-tests/common/changelog/drop-column-mssql-diff.xml
@@ -0,0 +1,17 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-column name="num"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-column-mssql-patch.xml b/odb-tests/common/changelog/drop-column-mssql-patch.xml
new file mode 100644
index 0000000..32402a3
--- /dev/null
+++ b/odb-tests/common/changelog/drop-column-mssql-patch.xml
@@ -0,0 +1,12 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-column-mysql-diff.xml b/odb-tests/common/changelog/drop-column-mysql-diff.xml
new file mode 100644
index 0000000..2bb321d
--- /dev/null
+++ b/odb-tests/common/changelog/drop-column-mysql-diff.xml
@@ -0,0 +1,17 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-column name="num"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-column-mysql-patch.xml b/odb-tests/common/changelog/drop-column-mysql-patch.xml
new file mode 100644
index 0000000..6572ebe
--- /dev/null
+++ b/odb-tests/common/changelog/drop-column-mysql-patch.xml
@@ -0,0 +1,12 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-column-oracle-diff.xml b/odb-tests/common/changelog/drop-column-oracle-diff.xml
new file mode 100644
index 0000000..e920a12
--- /dev/null
+++ b/odb-tests/common/changelog/drop-column-oracle-diff.xml
@@ -0,0 +1,17 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-column name="num"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="false"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-column-oracle-patch.xml b/odb-tests/common/changelog/drop-column-oracle-patch.xml
new file mode 100644
index 0000000..b113664
--- /dev/null
+++ b/odb-tests/common/changelog/drop-column-oracle-patch.xml
@@ -0,0 +1,12 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-column-pgsql-diff.xml b/odb-tests/common/changelog/drop-column-pgsql-diff.xml
new file mode 100644
index 0000000..d2e91ba
--- /dev/null
+++ b/odb-tests/common/changelog/drop-column-pgsql-diff.xml
@@ -0,0 +1,17 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-column name="num"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-column-pgsql-patch.xml b/odb-tests/common/changelog/drop-column-pgsql-patch.xml
new file mode 100644
index 0000000..06cc73d
--- /dev/null
+++ b/odb-tests/common/changelog/drop-column-pgsql-patch.xml
@@ -0,0 +1,12 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-column-sqlite-diff.xml b/odb-tests/common/changelog/drop-column-sqlite-diff.xml
new file mode 100644
index 0000000..1c9d138
--- /dev/null
+++ b/odb-tests/common/changelog/drop-column-sqlite-diff.xml
@@ -0,0 +1,17 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-column name="num"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-column-sqlite-patch.xml b/odb-tests/common/changelog/drop-column-sqlite-patch.xml
new file mode 100644
index 0000000..6887530
--- /dev/null
+++ b/odb-tests/common/changelog/drop-column-sqlite-patch.xml
@@ -0,0 +1,12 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-column.hxx b/odb-tests/common/changelog/drop-column.hxx
new file mode 100644
index 0000000..3de237d
--- /dev/null
+++ b/odb-tests/common/changelog/drop-column.hxx
@@ -0,0 +1,20 @@
+// file : common/changelog/drop-column.hxx
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef DROP_COLUMN_HXX
+#define DROP_COLUMN_HXX
+
+#pragma db model version(BVER, CVER, open)
+
+#pragma db object
+struct object
+{
+ #pragma db id auto
+ int id;
+
+#if CVER == 1
+ int num;
+#endif
+};
+
+#endif // DROP_COLUMN_HXX
diff --git a/odb-tests/common/changelog/drop-foreign-key-mssql-diff.xml b/odb-tests/common/changelog/drop-foreign-key-mssql-diff.xml
new file mode 100644
index 0000000..da3ce73
--- /dev/null
+++ b/odb-tests/common/changelog/drop-foreign-key-mssql-diff.xml
@@ -0,0 +1,30 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-foreign-key name="object_o1_fk"/>
+ <drop-column name="o1"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="o1" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-foreign-key-mssql-patch.xml b/odb-tests/common/changelog/drop-foreign-key-mssql-patch.xml
new file mode 100644
index 0000000..cd1a372
--- /dev/null
+++ b/odb-tests/common/changelog/drop-foreign-key-mssql-patch.xml
@@ -0,0 +1,18 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-foreign-key-mysql-diff.xml b/odb-tests/common/changelog/drop-foreign-key-mysql-diff.xml
new file mode 100644
index 0000000..aa179f2
--- /dev/null
+++ b/odb-tests/common/changelog/drop-foreign-key-mysql-diff.xml
@@ -0,0 +1,30 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-foreign-key name="object_o1_fk"/>
+ <drop-column name="o1"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="o1" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object1" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-foreign-key-mysql-patch.xml b/odb-tests/common/changelog/drop-foreign-key-mysql-patch.xml
new file mode 100644
index 0000000..67f026e
--- /dev/null
+++ b/odb-tests/common/changelog/drop-foreign-key-mysql-patch.xml
@@ -0,0 +1,18 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object1" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-foreign-key-oracle-diff.xml b/odb-tests/common/changelog/drop-foreign-key-oracle-diff.xml
new file mode 100644
index 0000000..aa407d3
--- /dev/null
+++ b/odb-tests/common/changelog/drop-foreign-key-oracle-diff.xml
@@ -0,0 +1,30 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-foreign-key name="object_o1_fk"/>
+ <drop-column name="o1"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="o1" type="NUMBER(10)" null="true"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-foreign-key-oracle-patch.xml b/odb-tests/common/changelog/drop-foreign-key-oracle-patch.xml
new file mode 100644
index 0000000..56253f0
--- /dev/null
+++ b/odb-tests/common/changelog/drop-foreign-key-oracle-patch.xml
@@ -0,0 +1,18 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-foreign-key-pgsql-diff.xml b/odb-tests/common/changelog/drop-foreign-key-pgsql-diff.xml
new file mode 100644
index 0000000..9a6259a
--- /dev/null
+++ b/odb-tests/common/changelog/drop-foreign-key-pgsql-diff.xml
@@ -0,0 +1,30 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-foreign-key name="o1_fk"/>
+ <drop-column name="o1"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="o1" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-foreign-key-pgsql-patch.xml b/odb-tests/common/changelog/drop-foreign-key-pgsql-patch.xml
new file mode 100644
index 0000000..df024b4
--- /dev/null
+++ b/odb-tests/common/changelog/drop-foreign-key-pgsql-patch.xml
@@ -0,0 +1,18 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-foreign-key-sqlite-diff.xml b/odb-tests/common/changelog/drop-foreign-key-sqlite-diff.xml
new file mode 100644
index 0000000..6f9f994
--- /dev/null
+++ b/odb-tests/common/changelog/drop-foreign-key-sqlite-diff.xml
@@ -0,0 +1,30 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-foreign-key name="o1_fk"/>
+ <drop-column name="o1"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="o1" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-foreign-key-sqlite-patch.xml b/odb-tests/common/changelog/drop-foreign-key-sqlite-patch.xml
new file mode 100644
index 0000000..6e63218
--- /dev/null
+++ b/odb-tests/common/changelog/drop-foreign-key-sqlite-patch.xml
@@ -0,0 +1,18 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-foreign-key.hxx b/odb-tests/common/changelog/drop-foreign-key.hxx
new file mode 100644
index 0000000..ba3005f
--- /dev/null
+++ b/odb-tests/common/changelog/drop-foreign-key.hxx
@@ -0,0 +1,29 @@
+// file : common/changelog/drop-foreign-key.hxx
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef DROP_FOREIGN_KEY_HXX
+#define DROP_FOREIGN_KEY_HXX
+
+#pragma db model version(BVER, CVER, open)
+
+struct object1;
+
+#pragma db object
+struct object
+{
+ #pragma db id auto
+ int id;
+
+#if CVER == 1
+ object1* o1;
+#endif
+};
+
+#pragma db object
+struct object1
+{
+ #pragma db id
+ int id;
+};
+
+#endif // DROP_FOREIGN_KEY_HXX
diff --git a/odb-tests/common/changelog/drop-index-mssql-diff.xml b/odb-tests/common/changelog/drop-index-mssql-diff.xml
new file mode 100644
index 0000000..ac95db5
--- /dev/null
+++ b/odb-tests/common/changelog/drop-index-mssql-diff.xml
@@ -0,0 +1,20 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-index name="num_i"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <index name="num_i">
+ <column name="num"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-index-mssql-patch.xml b/odb-tests/common/changelog/drop-index-mssql-patch.xml
new file mode 100644
index 0000000..4f396d9
--- /dev/null
+++ b/odb-tests/common/changelog/drop-index-mssql-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-index-mysql-diff.xml b/odb-tests/common/changelog/drop-index-mysql-diff.xml
new file mode 100644
index 0000000..f8c95ef
--- /dev/null
+++ b/odb-tests/common/changelog/drop-index-mysql-diff.xml
@@ -0,0 +1,20 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-index name="num_i"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <index name="num_i">
+ <column name="num"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-index-mysql-patch.xml b/odb-tests/common/changelog/drop-index-mysql-patch.xml
new file mode 100644
index 0000000..14f3f01
--- /dev/null
+++ b/odb-tests/common/changelog/drop-index-mysql-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-index-oracle-diff.xml b/odb-tests/common/changelog/drop-index-oracle-diff.xml
new file mode 100644
index 0000000..d174802
--- /dev/null
+++ b/odb-tests/common/changelog/drop-index-oracle-diff.xml
@@ -0,0 +1,20 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-index name="object_num_i"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="false"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ <index name="object_num_i">
+ <column name="num"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-index-oracle-patch.xml b/odb-tests/common/changelog/drop-index-oracle-patch.xml
new file mode 100644
index 0000000..38fb8d6
--- /dev/null
+++ b/odb-tests/common/changelog/drop-index-oracle-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="false"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-index-pgsql-diff.xml b/odb-tests/common/changelog/drop-index-pgsql-diff.xml
new file mode 100644
index 0000000..375a3d8
--- /dev/null
+++ b/odb-tests/common/changelog/drop-index-pgsql-diff.xml
@@ -0,0 +1,20 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-index name="object_num_i"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <index name="object_num_i">
+ <column name="num"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-index-pgsql-patch.xml b/odb-tests/common/changelog/drop-index-pgsql-patch.xml
new file mode 100644
index 0000000..7f7d9a0
--- /dev/null
+++ b/odb-tests/common/changelog/drop-index-pgsql-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-index-sqlite-diff.xml b/odb-tests/common/changelog/drop-index-sqlite-diff.xml
new file mode 100644
index 0000000..bf54f9d
--- /dev/null
+++ b/odb-tests/common/changelog/drop-index-sqlite-diff.xml
@@ -0,0 +1,20 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="2">
+ <alter-table name="object">
+ <drop-index name="object_num_i"/>
+ </alter-table>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <index name="object_num_i">
+ <column name="num"/>
+ </index>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-index-sqlite-patch.xml b/odb-tests/common/changelog/drop-index-sqlite-patch.xml
new file mode 100644
index 0000000..fbe4428
--- /dev/null
+++ b/odb-tests/common/changelog/drop-index-sqlite-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-index.hxx b/odb-tests/common/changelog/drop-index.hxx
new file mode 100644
index 0000000..08fecba
--- /dev/null
+++ b/odb-tests/common/changelog/drop-index.hxx
@@ -0,0 +1,21 @@
+// file : common/changelog/drop-index.hxx
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef DROP_INDEX_HXX
+#define DROP_INDEX_HXX
+
+#pragma db model version(BVER, CVER, open)
+
+#pragma db object
+struct object
+{
+ #pragma db id auto
+ int id;
+
+#if CVER == 1
+ #pragma db index
+#endif
+ int num;
+};
+
+#endif // DROP_INDEX_HXX
diff --git a/odb-tests/common/changelog/drop-table-mssql-diff.xml b/odb-tests/common/changelog/drop-table-mssql-diff.xml
new file mode 100644
index 0000000..399d8bc
--- /dev/null
+++ b/odb-tests/common/changelog/drop-table-mssql-diff.xml
@@ -0,0 +1,47 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="2">
+ <drop-table name="object"/>
+ <drop-table name="object_nums"/>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <column name="o1" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object_nums" kind="container">
+ <column name="object_id" type="INT" null="false"/>
+ <column name="index" type="BIGINT" null="false"/>
+ <column name="value" type="INT" null="false"/>
+ <foreign-key name="object_nums_object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-table-mssql-patch.xml b/odb-tests/common/changelog/drop-table-mssql-patch.xml
new file mode 100644
index 0000000..c5dda75
--- /dev/null
+++ b/odb-tests/common/changelog/drop-table-mssql-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object1" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-table-mysql-diff.xml b/odb-tests/common/changelog/drop-table-mysql-diff.xml
new file mode 100644
index 0000000..3ccd553
--- /dev/null
+++ b/odb-tests/common/changelog/drop-table-mysql-diff.xml
@@ -0,0 +1,47 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="2">
+ <drop-table name="object"/>
+ <drop-table name="object_nums"/>
+ </changeset>
+
+ <model version="1">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <column name="o1" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object_nums" options="ENGINE=InnoDB" kind="container">
+ <column name="object_id" type="INT" null="false"/>
+ <column name="index" type="BIGINT UNSIGNED" null="false"/>
+ <column name="value" type="INT" null="false"/>
+ <foreign-key name="object_nums_object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ <table name="object1" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-table-mysql-patch.xml b/odb-tests/common/changelog/drop-table-mysql-patch.xml
new file mode 100644
index 0000000..250bd20
--- /dev/null
+++ b/odb-tests/common/changelog/drop-table-mysql-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object1" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-table-oracle-diff.xml b/odb-tests/common/changelog/drop-table-oracle-diff.xml
new file mode 100644
index 0000000..589d64b
--- /dev/null
+++ b/odb-tests/common/changelog/drop-table-oracle-diff.xml
@@ -0,0 +1,47 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="2">
+ <drop-table name="object"/>
+ <drop-table name="object_nums"/>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="false"/>
+ <column name="o1" type="NUMBER(10)" null="true"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object_nums" kind="container">
+ <column name="object_id" type="NUMBER(10)" null="false"/>
+ <column name="index" type="NUMBER(20)" null="false"/>
+ <column name="value" type="NUMBER(10)" null="false"/>
+ <foreign-key name="object_nums_object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_nums_object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="object_nums_index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-table-oracle-patch.xml b/odb-tests/common/changelog/drop-table-oracle-patch.xml
new file mode 100644
index 0000000..5f222dc
--- /dev/null
+++ b/odb-tests/common/changelog/drop-table-oracle-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object1" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-table-pgsql-diff.xml b/odb-tests/common/changelog/drop-table-pgsql-diff.xml
new file mode 100644
index 0000000..168ec46
--- /dev/null
+++ b/odb-tests/common/changelog/drop-table-pgsql-diff.xml
@@ -0,0 +1,47 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="2">
+ <drop-table name="object"/>
+ <drop-table name="object_nums"/>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <column name="o1" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object_nums" kind="container">
+ <column name="object_id" type="INTEGER" null="false"/>
+ <column name="index" type="BIGINT" null="false"/>
+ <column name="value" type="INTEGER" null="false"/>
+ <foreign-key name="object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_nums_object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="object_nums_index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-table-pgsql-patch.xml b/odb-tests/common/changelog/drop-table-pgsql-patch.xml
new file mode 100644
index 0000000..ebb7000
--- /dev/null
+++ b/odb-tests/common/changelog/drop-table-pgsql-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-table-sqlite-diff.xml b/odb-tests/common/changelog/drop-table-sqlite-diff.xml
new file mode 100644
index 0000000..6a258c4
--- /dev/null
+++ b/odb-tests/common/changelog/drop-table-sqlite-diff.xml
@@ -0,0 +1,47 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="2">
+ <drop-table name="object"/>
+ <drop-table name="object_nums"/>
+ </changeset>
+
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <column name="o1" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1"/>
+ <references table="object1">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ </table>
+ <table name="object_nums" kind="container">
+ <column name="object_id" type="INTEGER" null="false"/>
+ <column name="index" type="INTEGER" null="false"/>
+ <column name="value" type="INTEGER" null="false"/>
+ <foreign-key name="object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_nums_object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="object_nums_index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-table-sqlite-patch.xml b/odb-tests/common/changelog/drop-table-sqlite-patch.xml
new file mode 100644
index 0000000..45c6f00
--- /dev/null
+++ b/odb-tests/common/changelog/drop-table-sqlite-patch.xml
@@ -0,0 +1,13 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <changeset version="3"/>
+
+ <model version="2">
+ <table name="object1" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/drop-table.hxx b/odb-tests/common/changelog/drop-table.hxx
new file mode 100644
index 0000000..2919e52
--- /dev/null
+++ b/odb-tests/common/changelog/drop-table.hxx
@@ -0,0 +1,34 @@
+// file : common/changelog/drop-table.hxx
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef DROP_TABLE_HXX
+#define DROP_TABLE_HXX
+
+#include <vector>
+
+#pragma db model version(BVER, CVER, open)
+
+struct object1;
+
+#if CVER == 1
+#pragma db object
+struct object
+{
+ #pragma db id auto
+ int id;
+ int num;
+
+ std::vector<int> nums;
+ object1* o1;
+};
+#endif
+
+#pragma db object
+struct object1
+{
+ #pragma db id
+ int id;
+ int num;
+};
+
+#endif // DROP_TABLE_HXX
diff --git a/odb-tests/common/changelog/model-mssql-diff.xml b/odb-tests/common/changelog/model-mssql-diff.xml
new file mode 120000
index 0000000..e1f812d
--- /dev/null
+++ b/odb-tests/common/changelog/model-mssql-diff.xml
@@ -0,0 +1 @@
+model-mssql.xml \ No newline at end of file
diff --git a/odb-tests/common/changelog/model-mssql-patch.xml b/odb-tests/common/changelog/model-mssql-patch.xml
new file mode 120000
index 0000000..e1f812d
--- /dev/null
+++ b/odb-tests/common/changelog/model-mssql-patch.xml
@@ -0,0 +1 @@
+model-mssql.xml \ No newline at end of file
diff --git a/odb-tests/common/changelog/model-mssql.xml b/odb-tests/common/changelog/model-mssql.xml
new file mode 100644
index 0000000..509a210
--- /dev/null
+++ b/odb-tests/common/changelog/model-mssql.xml
@@ -0,0 +1,56 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mssql" version="1">
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="true" default="0" options="DUMMY=1"/>
+ <column name="v_x" type="INT" null="false"/>
+ <column name="v_y" type="INT" null="false"/>
+ <column name="o1_x" type="INT" null="true"/>
+ <column name="o1_y" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1_x"/>
+ <column name="o1_y"/>
+ <references table="object1">
+ <column name="id_x"/>
+ <column name="id_y"/>
+ </references>
+ </foreign-key>
+ <index name="num_i" type="UNIQUE" method="BTREE" options="DUMMY=1">
+ <column name="num" options="DESC"/>
+ </index>
+ <index name="v_i">
+ <column name="v_x"/>
+ <column name="v_y"/>
+ </index>
+ </table>
+ <table name="object_nums" kind="container">
+ <column name="object_id" type="INT" null="false"/>
+ <column name="index" type="BIGINT" null="false"/>
+ <column name="value" type="INT" null="false"/>
+ <foreign-key name="object_nums_object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id_x" type="INT" null="false"/>
+ <column name="id_y" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key>
+ <column name="id_x"/>
+ <column name="id_y"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/model-mysql-diff.xml b/odb-tests/common/changelog/model-mysql-diff.xml
new file mode 120000
index 0000000..9100280
--- /dev/null
+++ b/odb-tests/common/changelog/model-mysql-diff.xml
@@ -0,0 +1 @@
+model-mysql.xml \ No newline at end of file
diff --git a/odb-tests/common/changelog/model-mysql-patch.xml b/odb-tests/common/changelog/model-mysql-patch.xml
new file mode 120000
index 0000000..9100280
--- /dev/null
+++ b/odb-tests/common/changelog/model-mysql-patch.xml
@@ -0,0 +1 @@
+model-mysql.xml \ No newline at end of file
diff --git a/odb-tests/common/changelog/model-mysql.xml b/odb-tests/common/changelog/model-mysql.xml
new file mode 100644
index 0000000..ffbcf8d
--- /dev/null
+++ b/odb-tests/common/changelog/model-mysql.xml
@@ -0,0 +1,56 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="mysql" version="1">
+ <model version="1">
+ <table name="object" options="ENGINE=InnoDB" kind="object">
+ <column name="id" type="INT" null="false"/>
+ <column name="num" type="INT" null="true" default="0" options="DUMMY=1"/>
+ <column name="v_x" type="INT" null="false"/>
+ <column name="v_y" type="INT" null="false"/>
+ <column name="o1_x" type="INT" null="true"/>
+ <column name="o1_y" type="INT" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1_x"/>
+ <column name="o1_y"/>
+ <references table="object1">
+ <column name="id_x"/>
+ <column name="id_y"/>
+ </references>
+ </foreign-key>
+ <index name="num_i" type="UNIQUE" method="BTREE" options="DUMMY=1">
+ <column name="num" options="DESC"/>
+ </index>
+ <index name="v_i">
+ <column name="v_x"/>
+ <column name="v_y"/>
+ </index>
+ </table>
+ <table name="object_nums" options="ENGINE=InnoDB" kind="container">
+ <column name="object_id" type="INT" null="false"/>
+ <column name="index" type="BIGINT UNSIGNED" null="false"/>
+ <column name="value" type="INT" null="false"/>
+ <foreign-key name="object_nums_object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ <table name="object1" options="ENGINE=InnoDB" kind="object">
+ <column name="id_x" type="INT" null="false"/>
+ <column name="id_y" type="INT" null="false"/>
+ <column name="num" type="INT" null="false"/>
+ <primary-key>
+ <column name="id_x"/>
+ <column name="id_y"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/model-oracle-diff.xml b/odb-tests/common/changelog/model-oracle-diff.xml
new file mode 120000
index 0000000..36e4479
--- /dev/null
+++ b/odb-tests/common/changelog/model-oracle-diff.xml
@@ -0,0 +1 @@
+model-oracle.xml \ No newline at end of file
diff --git a/odb-tests/common/changelog/model-oracle-patch.xml b/odb-tests/common/changelog/model-oracle-patch.xml
new file mode 120000
index 0000000..36e4479
--- /dev/null
+++ b/odb-tests/common/changelog/model-oracle-patch.xml
@@ -0,0 +1 @@
+model-oracle.xml \ No newline at end of file
diff --git a/odb-tests/common/changelog/model-oracle.xml b/odb-tests/common/changelog/model-oracle.xml
new file mode 100644
index 0000000..1824690
--- /dev/null
+++ b/odb-tests/common/changelog/model-oracle.xml
@@ -0,0 +1,56 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="oracle" version="1">
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="true" default="0" options="DUMMY=1"/>
+ <column name="v_x" type="NUMBER(10)" null="false"/>
+ <column name="v_y" type="NUMBER(10)" null="false"/>
+ <column name="o1_x" type="NUMBER(10)" null="true"/>
+ <column name="o1_y" type="NUMBER(10)" null="true"/>
+ <primary-key auto="true" sequence="object_seq">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="object_o1_fk" deferrable="DEFERRED">
+ <column name="o1_x"/>
+ <column name="o1_y"/>
+ <references table="object1">
+ <column name="id_x"/>
+ <column name="id_y"/>
+ </references>
+ </foreign-key>
+ <index name="object_num_i" type="UNIQUE" method="BTREE" options="DUMMY=1">
+ <column name="num" options="DESC"/>
+ </index>
+ <index name="object_v_i">
+ <column name="v_x"/>
+ <column name="v_y"/>
+ </index>
+ </table>
+ <table name="object_nums" kind="container">
+ <column name="object_id" type="NUMBER(10)" null="false"/>
+ <column name="index" type="NUMBER(20)" null="false"/>
+ <column name="value" type="NUMBER(10)" null="false"/>
+ <foreign-key name="object_nums_object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_nums_object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="object_nums_index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id_x" type="NUMBER(10)" null="false"/>
+ <column name="id_y" type="NUMBER(10)" null="false"/>
+ <column name="num" type="NUMBER(10)" null="false"/>
+ <primary-key>
+ <column name="id_x"/>
+ <column name="id_y"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/model-pgsql-diff.xml b/odb-tests/common/changelog/model-pgsql-diff.xml
new file mode 120000
index 0000000..b39ce26
--- /dev/null
+++ b/odb-tests/common/changelog/model-pgsql-diff.xml
@@ -0,0 +1 @@
+model-pgsql.xml \ No newline at end of file
diff --git a/odb-tests/common/changelog/model-pgsql-patch.xml b/odb-tests/common/changelog/model-pgsql-patch.xml
new file mode 120000
index 0000000..b39ce26
--- /dev/null
+++ b/odb-tests/common/changelog/model-pgsql-patch.xml
@@ -0,0 +1 @@
+model-pgsql.xml \ No newline at end of file
diff --git a/odb-tests/common/changelog/model-pgsql.xml b/odb-tests/common/changelog/model-pgsql.xml
new file mode 100644
index 0000000..13aee6b
--- /dev/null
+++ b/odb-tests/common/changelog/model-pgsql.xml
@@ -0,0 +1,56 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="pgsql" version="1">
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="true" default="0" options="DUMMY=1"/>
+ <column name="v_x" type="INTEGER" null="false"/>
+ <column name="v_y" type="INTEGER" null="false"/>
+ <column name="o1_x" type="INTEGER" null="true"/>
+ <column name="o1_y" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1_x"/>
+ <column name="o1_y"/>
+ <references table="object1">
+ <column name="id_x"/>
+ <column name="id_y"/>
+ </references>
+ </foreign-key>
+ <index name="object_num_i" type="UNIQUE" method="BTREE" options="DUMMY=1">
+ <column name="num" options="DESC"/>
+ </index>
+ <index name="object_v_i">
+ <column name="v_x"/>
+ <column name="v_y"/>
+ </index>
+ </table>
+ <table name="object_nums" kind="container">
+ <column name="object_id" type="INTEGER" null="false"/>
+ <column name="index" type="BIGINT" null="false"/>
+ <column name="value" type="INTEGER" null="false"/>
+ <foreign-key name="object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_nums_object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="object_nums_index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id_x" type="INTEGER" null="false"/>
+ <column name="id_y" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id_x"/>
+ <column name="id_y"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/model-sqlite-diff.xml b/odb-tests/common/changelog/model-sqlite-diff.xml
new file mode 120000
index 0000000..3454f51
--- /dev/null
+++ b/odb-tests/common/changelog/model-sqlite-diff.xml
@@ -0,0 +1 @@
+model-sqlite.xml \ No newline at end of file
diff --git a/odb-tests/common/changelog/model-sqlite-patch.xml b/odb-tests/common/changelog/model-sqlite-patch.xml
new file mode 120000
index 0000000..3454f51
--- /dev/null
+++ b/odb-tests/common/changelog/model-sqlite-patch.xml
@@ -0,0 +1 @@
+model-sqlite.xml \ No newline at end of file
diff --git a/odb-tests/common/changelog/model-sqlite.xml b/odb-tests/common/changelog/model-sqlite.xml
new file mode 100644
index 0000000..d0199ed
--- /dev/null
+++ b/odb-tests/common/changelog/model-sqlite.xml
@@ -0,0 +1,56 @@
+<changelog xmlns="http://www.codesynthesis.com/xmlns/odb/changelog" database="sqlite" version="1">
+ <model version="1">
+ <table name="object" kind="object">
+ <column name="id" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="true" default="0" options="DUMMY=1"/>
+ <column name="v_x" type="INTEGER" null="false"/>
+ <column name="v_y" type="INTEGER" null="false"/>
+ <column name="o1_x" type="INTEGER" null="true"/>
+ <column name="o1_y" type="INTEGER" null="true"/>
+ <primary-key auto="true">
+ <column name="id"/>
+ </primary-key>
+ <foreign-key name="o1_fk" deferrable="DEFERRED">
+ <column name="o1_x"/>
+ <column name="o1_y"/>
+ <references table="object1">
+ <column name="id_x"/>
+ <column name="id_y"/>
+ </references>
+ </foreign-key>
+ <index name="object_num_i" type="UNIQUE" method="BTREE" options="DUMMY=1">
+ <column name="num" options="DESC"/>
+ </index>
+ <index name="object_v_i">
+ <column name="v_x"/>
+ <column name="v_y"/>
+ </index>
+ </table>
+ <table name="object_nums" kind="container">
+ <column name="object_id" type="INTEGER" null="false"/>
+ <column name="index" type="INTEGER" null="false"/>
+ <column name="value" type="INTEGER" null="false"/>
+ <foreign-key name="object_id_fk" on-delete="CASCADE">
+ <column name="object_id"/>
+ <references table="object">
+ <column name="id"/>
+ </references>
+ </foreign-key>
+ <index name="object_nums_object_id_i">
+ <column name="object_id"/>
+ </index>
+ <index name="object_nums_index_i">
+ <column name="index"/>
+ </index>
+ </table>
+ <table name="object1" kind="object">
+ <column name="id_x" type="INTEGER" null="false"/>
+ <column name="id_y" type="INTEGER" null="false"/>
+ <column name="num" type="INTEGER" null="false"/>
+ <primary-key>
+ <column name="id_x"/>
+ <column name="id_y"/>
+ </primary-key>
+ </table>
+ </model>
+</changelog>
diff --git a/odb-tests/common/changelog/model.hxx b/odb-tests/common/changelog/model.hxx
new file mode 100644
index 0000000..aa8891a
--- /dev/null
+++ b/odb-tests/common/changelog/model.hxx
@@ -0,0 +1,46 @@
+// file : common/changelog/model.hxx
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef MODEL_HXX
+#define MODEL_HXX
+
+#include <vector>
+
+#pragma db model version(1, 1, open)
+
+#pragma db value
+struct value
+{
+ int x;
+ int y;
+};
+
+struct object1;
+
+#pragma db object
+struct object
+{
+ #pragma db id auto
+ int id;
+
+ #pragma db null default(0) options("DUMMY=1")
+ int num;
+
+ #pragma db index unique member(num, "DESC") method("BTREE") options("DUMMY=1")
+
+ #pragma db index
+ value v; // Multi-column.
+
+ std::vector<int> nums;
+ object1* o1;
+};
+
+#pragma db object
+struct object1
+{
+ #pragma db id
+ value id; // Multi-column.
+ int num;
+};
+
+#endif // MODEL_HXX
diff --git a/odb-tests/common/changelog/testscript b/odb-tests/common/changelog/testscript
new file mode 100644
index 0000000..9368938
--- /dev/null
+++ b/odb-tests/common/changelog/testscript
@@ -0,0 +1,66 @@
+# file : common/changelog/testscript
+# license : GNU GPL v2; see accompanying LICENSE file
+
+headers = [paths] $path_search($src_base/*.hxx)
+
+odb_options = --generate-schema-only \
+ --schema-format sql \
+ --suppress-migration \
+ --options-file $out_base/odb.options
+
+: mysql
+:
+if $mysql
+{
+ odb_options += --database 'mysql' --changelog-dir $~
+
+ for h: $headers
+ n = $base($leaf($h))
+
+ $* $odb_options -DBVER=1 -DCVER=1 --init-changelog $h &$(n).xml &$(n).sql
+
+ $* $odb_options -DBVER=1 -DCVER=2 $h
+ diff $src_base/$n-mysql-diff.xml $(n).xml
+
+ $* $odb_options -DBVER=2 -DCVER=3 $h
+ diff $src_base/$n-mysql-patch.xml $(n).xml
+ end
+}
+
+: sqlite
+:
+if $sqlite
+{
+ odb_options += --database 'sqlite' --changelog-dir $~
+
+ for h: $headers
+ n = $base($leaf($h))
+
+ $* $odb_options -DBVER=1 -DCVER=1 --init-changelog $h &$(n).xml &$(n).sql
+
+ $* $odb_options -DBVER=1 -DCVER=2 $h
+ diff $src_base/$n-sqlite-diff.xml $(n).xml
+
+ $* $odb_options -DBVER=2 -DCVER=3 $h
+ diff $src_base/$n-sqlite-patch.xml $(n).xml
+ end
+}
+
+: pgsql
+:
+if $pgsql
+{
+ odb_options += --database 'pgsql' --changelog-dir $~
+
+ for h: $headers
+ n = $base($leaf($h))
+
+ $* $odb_options -DBVER=1 -DCVER=1 --init-changelog $h &$(n).xml &$(n).sql
+
+ $* $odb_options -DBVER=1 -DCVER=2 $h
+ diff $src_base/$n-pgsql-diff.xml $(n).xml
+
+ $* $odb_options -DBVER=2 -DCVER=3 $h
+ diff $src_base/$n-pgsql-patch.xml $(n).xml
+ end
+}