aboutsummaryrefslogtreecommitdiff
path: root/libbutl-odb/odb
diff options
context:
space:
mode:
Diffstat (limited to 'libbutl-odb/odb')
l---------libbutl-odb/odb/c-array-traits.hxx1
l---------libbutl-odb/odb/cache-traits.hxx1
l---------libbutl-odb/odb/callback.hxx1
l---------libbutl-odb/odb/connection.cxx1
l---------libbutl-odb/odb/connection.hxx1
l---------libbutl-odb/odb/connection.ixx1
l---------libbutl-odb/odb/connection.txx1
l---------libbutl-odb/odb/container-traits.hxx1
l---------libbutl-odb/odb/core.hxx1
l---------libbutl-odb/odb/database.cxx1
l---------libbutl-odb/odb/database.hxx1
l---------libbutl-odb/odb/database.ixx1
l---------libbutl-odb/odb/database.txx1
l---------libbutl-odb/odb/details/buffer.cxx1
l---------libbutl-odb/odb/details/buffer.hxx1
l---------libbutl-odb/odb/details/c-string.hxx1
l---------libbutl-odb/odb/details/condition.hxx1
l---------libbutl-odb/odb/details/config-vc.h1
l---------libbutl-odb/odb/details/config.h1
l---------libbutl-odb/odb/details/config.hxx1
l---------libbutl-odb/odb/details/exception.hxx1
l---------libbutl-odb/odb/details/export.hxx1
l---------libbutl-odb/odb/details/function-wrapper.hxx1
l---------libbutl-odb/odb/details/function-wrapper.ixx1
l---------libbutl-odb/odb/details/function-wrapper.txx1
l---------libbutl-odb/odb/details/lock.hxx1
l---------libbutl-odb/odb/details/meta1
l---------libbutl-odb/odb/details/mutex.hxx1
l---------libbutl-odb/odb/details/shared-ptr1
l---------libbutl-odb/odb/details/shared-ptr-fwd.hxx1
l---------libbutl-odb/odb/details/shared-ptr.hxx1
l---------libbutl-odb/odb/details/thread.hxx1
l---------libbutl-odb/odb/details/tls.hxx1
l---------libbutl-odb/odb/details/transfer-ptr.hxx1
l---------libbutl-odb/odb/details/type-info.hxx1
l---------libbutl-odb/odb/details/unique-ptr.hxx1
l---------libbutl-odb/odb/details/unused.hxx1
l---------libbutl-odb/odb/details/win32/windows.hxx1
l---------libbutl-odb/odb/details/wrapper-p.hxx1
l---------libbutl-odb/odb/exception.hxx1
l---------libbutl-odb/odb/exceptions.cxx1
l---------libbutl-odb/odb/exceptions.hxx1
l---------libbutl-odb/odb/forward.hxx1
l---------libbutl-odb/odb/function-table.hxx1
l---------libbutl-odb/odb/lazy-pointer-traits.hxx1
l---------libbutl-odb/odb/lazy-ptr-impl.hxx1
l---------libbutl-odb/odb/lazy-ptr-impl.ixx1
l---------libbutl-odb/odb/lazy-ptr-impl.txx1
l---------libbutl-odb/odb/lazy-ptr.hxx1
l---------libbutl-odb/odb/lazy-ptr.ixx1
l---------libbutl-odb/odb/lazy-ptr.txx1
l---------libbutl-odb/odb/nested-container.hxx1
l---------libbutl-odb/odb/no-id-object-result.hxx1
l---------libbutl-odb/odb/no-id-object-result.txx1
l---------libbutl-odb/odb/no-op-cache-traits.hxx1
l---------libbutl-odb/odb/nullable.hxx1
l---------libbutl-odb/odb/object-result.hxx1
l---------libbutl-odb/odb/pointer-traits.hxx1
l---------libbutl-odb/odb/polymorphic-info.hxx1
l---------libbutl-odb/odb/polymorphic-map.hxx1
l---------libbutl-odb/odb/polymorphic-map.ixx1
l---------libbutl-odb/odb/polymorphic-map.txx1
l---------libbutl-odb/odb/polymorphic-object-result.hxx1
l---------libbutl-odb/odb/polymorphic-object-result.txx1
l---------libbutl-odb/odb/post.hxx1
l---------libbutl-odb/odb/pre.hxx1
l---------libbutl-odb/odb/prepared-query.cxx1
l---------libbutl-odb/odb/prepared-query.hxx1
l---------libbutl-odb/odb/query-dynamic.cxx1
l---------libbutl-odb/odb/query-dynamic.hxx1
l---------libbutl-odb/odb/query-dynamic.ixx1
l---------libbutl-odb/odb/query-dynamic.txx1
l---------libbutl-odb/odb/query.hxx1
l---------libbutl-odb/odb/result.cxx1
l---------libbutl-odb/odb/result.hxx1
l---------libbutl-odb/odb/result.txx1
l---------libbutl-odb/odb/schema-catalog-impl.hxx1
l---------libbutl-odb/odb/schema-catalog.cxx1
l---------libbutl-odb/odb/schema-catalog.hxx1
l---------libbutl-odb/odb/schema-version.hxx1
l---------libbutl-odb/odb/section.cxx1
l---------libbutl-odb/odb/section.hxx1
l---------libbutl-odb/odb/session.cxx1
l---------libbutl-odb/odb/session.hxx1
l---------libbutl-odb/odb/session.ixx1
l---------libbutl-odb/odb/session.txx1
l---------libbutl-odb/odb/simple-object-result.hxx1
l---------libbutl-odb/odb/simple-object-result.txx1
l---------libbutl-odb/odb/sqlite/auto-handle.hxx1
l---------libbutl-odb/odb/sqlite/binding.hxx1
l---------libbutl-odb/odb/sqlite/blob-stream.hxx1
l---------libbutl-odb/odb/sqlite/blob.hxx1
l---------libbutl-odb/odb/sqlite/connection-factory.cxx1
l---------libbutl-odb/odb/sqlite/connection-factory.hxx1
l---------libbutl-odb/odb/sqlite/connection.cxx1
l---------libbutl-odb/odb/sqlite/connection.hxx1
l---------libbutl-odb/odb/sqlite/connection.ixx1
l---------libbutl-odb/odb/sqlite/container-statements.hxx1
l---------libbutl-odb/odb/sqlite/container-statements.txx1
l---------libbutl-odb/odb/sqlite/database.cxx1
l---------libbutl-odb/odb/sqlite/database.hxx1
l---------libbutl-odb/odb/sqlite/database.ixx1
l---------libbutl-odb/odb/sqlite/details/config.hxx1
l---------libbutl-odb/odb/sqlite/details/conversion.hxx1
l---------libbutl-odb/odb/sqlite/details/export.hxx1
l---------libbutl-odb/odb/sqlite/details/options.cxx1
l---------libbutl-odb/odb/sqlite/details/options.hxx1
l---------libbutl-odb/odb/sqlite/details/options.ixx1
l---------libbutl-odb/odb/sqlite/error.cxx1
l---------libbutl-odb/odb/sqlite/error.hxx1
l---------libbutl-odb/odb/sqlite/exceptions.cxx1
l---------libbutl-odb/odb/sqlite/exceptions.hxx1
l---------libbutl-odb/odb/sqlite/forward.hxx1
l---------libbutl-odb/odb/sqlite/no-id-object-result.hxx1
l---------libbutl-odb/odb/sqlite/no-id-object-result.txx1
l---------libbutl-odb/odb/sqlite/no-id-object-statements.hxx1
l---------libbutl-odb/odb/sqlite/no-id-object-statements.txx1
l---------libbutl-odb/odb/sqlite/polymorphic-object-result.hxx1
l---------libbutl-odb/odb/sqlite/polymorphic-object-result.txx1
l---------libbutl-odb/odb/sqlite/polymorphic-object-statements.hxx1
l---------libbutl-odb/odb/sqlite/polymorphic-object-statements.txx1
l---------libbutl-odb/odb/sqlite/prepared-query.cxx1
l---------libbutl-odb/odb/sqlite/prepared-query.hxx1
l---------libbutl-odb/odb/sqlite/query-const-expr.cxx1
l---------libbutl-odb/odb/sqlite/query-dynamic.cxx1
l---------libbutl-odb/odb/sqlite/query-dynamic.hxx1
l---------libbutl-odb/odb/sqlite/query-dynamic.ixx1
l---------libbutl-odb/odb/sqlite/query-dynamic.txx1
l---------libbutl-odb/odb/sqlite/query.cxx1
l---------libbutl-odb/odb/sqlite/query.hxx1
l---------libbutl-odb/odb/sqlite/query.ixx1
l---------libbutl-odb/odb/sqlite/query.txx1
l---------libbutl-odb/odb/sqlite/section-statements.hxx1
l---------libbutl-odb/odb/sqlite/section-statements.txx1
l---------libbutl-odb/odb/sqlite/simple-object-result.hxx1
l---------libbutl-odb/odb/sqlite/simple-object-result.txx1
l---------libbutl-odb/odb/sqlite/simple-object-statements.cxx1
l---------libbutl-odb/odb/sqlite/simple-object-statements.hxx1
l---------libbutl-odb/odb/sqlite/simple-object-statements.ixx1
l---------libbutl-odb/odb/sqlite/simple-object-statements.txx1
l---------libbutl-odb/odb/sqlite/sqlite-types.hxx1
l---------libbutl-odb/odb/sqlite/statement-cache.hxx1
l---------libbutl-odb/odb/sqlite/statement-cache.txx1
l---------libbutl-odb/odb/sqlite/statement.cxx1
l---------libbutl-odb/odb/sqlite/statement.hxx1
l---------libbutl-odb/odb/sqlite/statements-base.cxx1
l---------libbutl-odb/odb/sqlite/statements-base.hxx1
l---------libbutl-odb/odb/sqlite/stream.cxx1
l---------libbutl-odb/odb/sqlite/stream.hxx1
l---------libbutl-odb/odb/sqlite/text-stream.hxx1
l---------libbutl-odb/odb/sqlite/text.hxx1
l---------libbutl-odb/odb/sqlite/tracer.cxx1
l---------libbutl-odb/odb/sqlite/tracer.hxx1
l---------libbutl-odb/odb/sqlite/traits-calls.hxx1
l---------libbutl-odb/odb/sqlite/traits.cxx1
l---------libbutl-odb/odb/sqlite/traits.hxx1
l---------libbutl-odb/odb/sqlite/transaction-impl.cxx1
l---------libbutl-odb/odb/sqlite/transaction-impl.hxx1
l---------libbutl-odb/odb/sqlite/transaction.cxx1
l---------libbutl-odb/odb/sqlite/transaction.hxx1
l---------libbutl-odb/odb/sqlite/transaction.ixx1
-rw-r--r--libbutl-odb/odb/sqlite/version.hxx65
l---------libbutl-odb/odb/sqlite/view-result.hxx1
l---------libbutl-odb/odb/sqlite/view-result.txx1
l---------libbutl-odb/odb/sqlite/view-statements.hxx1
l---------libbutl-odb/odb/sqlite/view-statements.txx1
l---------libbutl-odb/odb/statement-processing-common.hxx1
l---------libbutl-odb/odb/statement-processing.cxx1
l---------libbutl-odb/odb/statement.cxx1
l---------libbutl-odb/odb/statement.hxx1
l---------libbutl-odb/odb/std-array-traits.hxx1
l---------libbutl-odb/odb/std-deque-traits.hxx1
l---------libbutl-odb/odb/std-forward-list-traits.hxx1
l---------libbutl-odb/odb/std-list-traits.hxx1
l---------libbutl-odb/odb/std-map-traits.hxx1
l---------libbutl-odb/odb/std-set-traits.hxx1
l---------libbutl-odb/odb/std-unordered-map-traits.hxx1
l---------libbutl-odb/odb/std-unordered-set-traits.hxx1
l---------libbutl-odb/odb/std-vector-traits.hxx1
l---------libbutl-odb/odb/tracer.cxx1
l---------libbutl-odb/odb/tracer.hxx1
l---------libbutl-odb/odb/traits.hxx1
l---------libbutl-odb/odb/transaction.cxx1
l---------libbutl-odb/odb/transaction.hxx1
l---------libbutl-odb/odb/transaction.ixx1
l---------libbutl-odb/odb/vector-impl.cxx1
l---------libbutl-odb/odb/vector-impl.hxx1
l---------libbutl-odb/odb/vector-impl.ixx1
l---------libbutl-odb/odb/vector-traits.hxx1
l---------libbutl-odb/odb/vector-traits.txx1
l---------libbutl-odb/odb/vector.hxx1
l---------libbutl-odb/odb/vector.ixx1
-rw-r--r--libbutl-odb/odb/version.hxx65
l---------libbutl-odb/odb/view-image.hxx1
l---------libbutl-odb/odb/view-result.hxx1
l---------libbutl-odb/odb/view-result.txx1
l---------libbutl-odb/odb/wrapper-traits.hxx1
197 files changed, 325 insertions, 0 deletions
diff --git a/libbutl-odb/odb/c-array-traits.hxx b/libbutl-odb/odb/c-array-traits.hxx
new file mode 120000
index 0000000..112e8bc
--- /dev/null
+++ b/libbutl-odb/odb/c-array-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/c-array-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/cache-traits.hxx b/libbutl-odb/odb/cache-traits.hxx
new file mode 120000
index 0000000..73c5fbf
--- /dev/null
+++ b/libbutl-odb/odb/cache-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/cache-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/callback.hxx b/libbutl-odb/odb/callback.hxx
new file mode 120000
index 0000000..1144ff5
--- /dev/null
+++ b/libbutl-odb/odb/callback.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/callback.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/connection.cxx b/libbutl-odb/odb/connection.cxx
new file mode 120000
index 0000000..89f6c19
--- /dev/null
+++ b/libbutl-odb/odb/connection.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/connection.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/connection.hxx b/libbutl-odb/odb/connection.hxx
new file mode 120000
index 0000000..cc8a0a5
--- /dev/null
+++ b/libbutl-odb/odb/connection.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/connection.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/connection.ixx b/libbutl-odb/odb/connection.ixx
new file mode 120000
index 0000000..bc1cfb0
--- /dev/null
+++ b/libbutl-odb/odb/connection.ixx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/connection.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/connection.txx b/libbutl-odb/odb/connection.txx
new file mode 120000
index 0000000..37e8e2e
--- /dev/null
+++ b/libbutl-odb/odb/connection.txx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/connection.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/container-traits.hxx b/libbutl-odb/odb/container-traits.hxx
new file mode 120000
index 0000000..d71c3e7
--- /dev/null
+++ b/libbutl-odb/odb/container-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/container-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/core.hxx b/libbutl-odb/odb/core.hxx
new file mode 120000
index 0000000..f59ab1c
--- /dev/null
+++ b/libbutl-odb/odb/core.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/core.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/database.cxx b/libbutl-odb/odb/database.cxx
new file mode 120000
index 0000000..11e9538
--- /dev/null
+++ b/libbutl-odb/odb/database.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/database.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/database.hxx b/libbutl-odb/odb/database.hxx
new file mode 120000
index 0000000..0def196
--- /dev/null
+++ b/libbutl-odb/odb/database.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/database.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/database.ixx b/libbutl-odb/odb/database.ixx
new file mode 120000
index 0000000..f3a769b
--- /dev/null
+++ b/libbutl-odb/odb/database.ixx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/database.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/database.txx b/libbutl-odb/odb/database.txx
new file mode 120000
index 0000000..9d439a5
--- /dev/null
+++ b/libbutl-odb/odb/database.txx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/database.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/buffer.cxx b/libbutl-odb/odb/details/buffer.cxx
new file mode 120000
index 0000000..6af5fbc
--- /dev/null
+++ b/libbutl-odb/odb/details/buffer.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/buffer.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/buffer.hxx b/libbutl-odb/odb/details/buffer.hxx
new file mode 120000
index 0000000..a05e24f
--- /dev/null
+++ b/libbutl-odb/odb/details/buffer.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/buffer.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/c-string.hxx b/libbutl-odb/odb/details/c-string.hxx
new file mode 120000
index 0000000..6e1cd46
--- /dev/null
+++ b/libbutl-odb/odb/details/c-string.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/c-string.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/condition.hxx b/libbutl-odb/odb/details/condition.hxx
new file mode 120000
index 0000000..80ddb83
--- /dev/null
+++ b/libbutl-odb/odb/details/condition.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/condition.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/config-vc.h b/libbutl-odb/odb/details/config-vc.h
new file mode 120000
index 0000000..2e879c9
--- /dev/null
+++ b/libbutl-odb/odb/details/config-vc.h
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/config-vc.h \ No newline at end of file
diff --git a/libbutl-odb/odb/details/config.h b/libbutl-odb/odb/details/config.h
new file mode 120000
index 0000000..8fc2729
--- /dev/null
+++ b/libbutl-odb/odb/details/config.h
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/config.h \ No newline at end of file
diff --git a/libbutl-odb/odb/details/config.hxx b/libbutl-odb/odb/details/config.hxx
new file mode 120000
index 0000000..16ad4db
--- /dev/null
+++ b/libbutl-odb/odb/details/config.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/config.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/exception.hxx b/libbutl-odb/odb/details/exception.hxx
new file mode 120000
index 0000000..41e9c35
--- /dev/null
+++ b/libbutl-odb/odb/details/exception.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/exception.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/export.hxx b/libbutl-odb/odb/details/export.hxx
new file mode 120000
index 0000000..ddbd800
--- /dev/null
+++ b/libbutl-odb/odb/details/export.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/export.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/function-wrapper.hxx b/libbutl-odb/odb/details/function-wrapper.hxx
new file mode 120000
index 0000000..94b8f9e
--- /dev/null
+++ b/libbutl-odb/odb/details/function-wrapper.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/function-wrapper.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/function-wrapper.ixx b/libbutl-odb/odb/details/function-wrapper.ixx
new file mode 120000
index 0000000..05ec736
--- /dev/null
+++ b/libbutl-odb/odb/details/function-wrapper.ixx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/function-wrapper.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/function-wrapper.txx b/libbutl-odb/odb/details/function-wrapper.txx
new file mode 120000
index 0000000..4e33625
--- /dev/null
+++ b/libbutl-odb/odb/details/function-wrapper.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/function-wrapper.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/lock.hxx b/libbutl-odb/odb/details/lock.hxx
new file mode 120000
index 0000000..4099cee
--- /dev/null
+++ b/libbutl-odb/odb/details/lock.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/lock.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/meta b/libbutl-odb/odb/details/meta
new file mode 120000
index 0000000..c12653e
--- /dev/null
+++ b/libbutl-odb/odb/details/meta
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/meta \ No newline at end of file
diff --git a/libbutl-odb/odb/details/mutex.hxx b/libbutl-odb/odb/details/mutex.hxx
new file mode 120000
index 0000000..7bae0aa
--- /dev/null
+++ b/libbutl-odb/odb/details/mutex.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/mutex.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/shared-ptr b/libbutl-odb/odb/details/shared-ptr
new file mode 120000
index 0000000..591da08
--- /dev/null
+++ b/libbutl-odb/odb/details/shared-ptr
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/shared-ptr \ No newline at end of file
diff --git a/libbutl-odb/odb/details/shared-ptr-fwd.hxx b/libbutl-odb/odb/details/shared-ptr-fwd.hxx
new file mode 120000
index 0000000..21e771e
--- /dev/null
+++ b/libbutl-odb/odb/details/shared-ptr-fwd.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/shared-ptr-fwd.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/shared-ptr.hxx b/libbutl-odb/odb/details/shared-ptr.hxx
new file mode 120000
index 0000000..871bd50
--- /dev/null
+++ b/libbutl-odb/odb/details/shared-ptr.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/shared-ptr.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/thread.hxx b/libbutl-odb/odb/details/thread.hxx
new file mode 120000
index 0000000..9e3a478
--- /dev/null
+++ b/libbutl-odb/odb/details/thread.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/thread.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/tls.hxx b/libbutl-odb/odb/details/tls.hxx
new file mode 120000
index 0000000..72e1d04
--- /dev/null
+++ b/libbutl-odb/odb/details/tls.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/tls.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/transfer-ptr.hxx b/libbutl-odb/odb/details/transfer-ptr.hxx
new file mode 120000
index 0000000..360e1b9
--- /dev/null
+++ b/libbutl-odb/odb/details/transfer-ptr.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/transfer-ptr.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/type-info.hxx b/libbutl-odb/odb/details/type-info.hxx
new file mode 120000
index 0000000..c0aadef
--- /dev/null
+++ b/libbutl-odb/odb/details/type-info.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/type-info.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/unique-ptr.hxx b/libbutl-odb/odb/details/unique-ptr.hxx
new file mode 120000
index 0000000..63cf03a
--- /dev/null
+++ b/libbutl-odb/odb/details/unique-ptr.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/unique-ptr.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/unused.hxx b/libbutl-odb/odb/details/unused.hxx
new file mode 120000
index 0000000..d2d3488
--- /dev/null
+++ b/libbutl-odb/odb/details/unused.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/unused.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/win32/windows.hxx b/libbutl-odb/odb/details/win32/windows.hxx
new file mode 120000
index 0000000..9c1ebea
--- /dev/null
+++ b/libbutl-odb/odb/details/win32/windows.hxx
@@ -0,0 +1 @@
+../../../../upstream/odb/libodb/odb/details/win32/windows.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/details/wrapper-p.hxx b/libbutl-odb/odb/details/wrapper-p.hxx
new file mode 120000
index 0000000..a8389ae
--- /dev/null
+++ b/libbutl-odb/odb/details/wrapper-p.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb/odb/details/wrapper-p.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/exception.hxx b/libbutl-odb/odb/exception.hxx
new file mode 120000
index 0000000..e7f27bc
--- /dev/null
+++ b/libbutl-odb/odb/exception.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/exception.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/exceptions.cxx b/libbutl-odb/odb/exceptions.cxx
new file mode 120000
index 0000000..7d6764e
--- /dev/null
+++ b/libbutl-odb/odb/exceptions.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/exceptions.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/exceptions.hxx b/libbutl-odb/odb/exceptions.hxx
new file mode 120000
index 0000000..29476de
--- /dev/null
+++ b/libbutl-odb/odb/exceptions.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/exceptions.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/forward.hxx b/libbutl-odb/odb/forward.hxx
new file mode 120000
index 0000000..fce7288
--- /dev/null
+++ b/libbutl-odb/odb/forward.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/forward.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/function-table.hxx b/libbutl-odb/odb/function-table.hxx
new file mode 120000
index 0000000..be670b3
--- /dev/null
+++ b/libbutl-odb/odb/function-table.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/function-table.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/lazy-pointer-traits.hxx b/libbutl-odb/odb/lazy-pointer-traits.hxx
new file mode 120000
index 0000000..40886bb
--- /dev/null
+++ b/libbutl-odb/odb/lazy-pointer-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/lazy-pointer-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/lazy-ptr-impl.hxx b/libbutl-odb/odb/lazy-ptr-impl.hxx
new file mode 120000
index 0000000..d6ebbf9
--- /dev/null
+++ b/libbutl-odb/odb/lazy-ptr-impl.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/lazy-ptr-impl.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/lazy-ptr-impl.ixx b/libbutl-odb/odb/lazy-ptr-impl.ixx
new file mode 120000
index 0000000..d1e4d67
--- /dev/null
+++ b/libbutl-odb/odb/lazy-ptr-impl.ixx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/lazy-ptr-impl.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/lazy-ptr-impl.txx b/libbutl-odb/odb/lazy-ptr-impl.txx
new file mode 120000
index 0000000..d32a56c
--- /dev/null
+++ b/libbutl-odb/odb/lazy-ptr-impl.txx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/lazy-ptr-impl.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/lazy-ptr.hxx b/libbutl-odb/odb/lazy-ptr.hxx
new file mode 120000
index 0000000..4ec473c
--- /dev/null
+++ b/libbutl-odb/odb/lazy-ptr.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/lazy-ptr.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/lazy-ptr.ixx b/libbutl-odb/odb/lazy-ptr.ixx
new file mode 120000
index 0000000..990c6df
--- /dev/null
+++ b/libbutl-odb/odb/lazy-ptr.ixx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/lazy-ptr.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/lazy-ptr.txx b/libbutl-odb/odb/lazy-ptr.txx
new file mode 120000
index 0000000..7d13166
--- /dev/null
+++ b/libbutl-odb/odb/lazy-ptr.txx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/lazy-ptr.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/nested-container.hxx b/libbutl-odb/odb/nested-container.hxx
new file mode 120000
index 0000000..6204ec6
--- /dev/null
+++ b/libbutl-odb/odb/nested-container.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/nested-container.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/no-id-object-result.hxx b/libbutl-odb/odb/no-id-object-result.hxx
new file mode 120000
index 0000000..a4feda3
--- /dev/null
+++ b/libbutl-odb/odb/no-id-object-result.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/no-id-object-result.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/no-id-object-result.txx b/libbutl-odb/odb/no-id-object-result.txx
new file mode 120000
index 0000000..73def1a
--- /dev/null
+++ b/libbutl-odb/odb/no-id-object-result.txx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/no-id-object-result.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/no-op-cache-traits.hxx b/libbutl-odb/odb/no-op-cache-traits.hxx
new file mode 120000
index 0000000..c1ab173
--- /dev/null
+++ b/libbutl-odb/odb/no-op-cache-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/no-op-cache-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/nullable.hxx b/libbutl-odb/odb/nullable.hxx
new file mode 120000
index 0000000..be1e9ec
--- /dev/null
+++ b/libbutl-odb/odb/nullable.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/nullable.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/object-result.hxx b/libbutl-odb/odb/object-result.hxx
new file mode 120000
index 0000000..6fc617c
--- /dev/null
+++ b/libbutl-odb/odb/object-result.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/object-result.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/pointer-traits.hxx b/libbutl-odb/odb/pointer-traits.hxx
new file mode 120000
index 0000000..4d7924f
--- /dev/null
+++ b/libbutl-odb/odb/pointer-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/pointer-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/polymorphic-info.hxx b/libbutl-odb/odb/polymorphic-info.hxx
new file mode 120000
index 0000000..a6d2468
--- /dev/null
+++ b/libbutl-odb/odb/polymorphic-info.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/polymorphic-info.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/polymorphic-map.hxx b/libbutl-odb/odb/polymorphic-map.hxx
new file mode 120000
index 0000000..b92e037
--- /dev/null
+++ b/libbutl-odb/odb/polymorphic-map.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/polymorphic-map.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/polymorphic-map.ixx b/libbutl-odb/odb/polymorphic-map.ixx
new file mode 120000
index 0000000..ad9ad3f
--- /dev/null
+++ b/libbutl-odb/odb/polymorphic-map.ixx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/polymorphic-map.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/polymorphic-map.txx b/libbutl-odb/odb/polymorphic-map.txx
new file mode 120000
index 0000000..ff264dc
--- /dev/null
+++ b/libbutl-odb/odb/polymorphic-map.txx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/polymorphic-map.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/polymorphic-object-result.hxx b/libbutl-odb/odb/polymorphic-object-result.hxx
new file mode 120000
index 0000000..5482901
--- /dev/null
+++ b/libbutl-odb/odb/polymorphic-object-result.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/polymorphic-object-result.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/polymorphic-object-result.txx b/libbutl-odb/odb/polymorphic-object-result.txx
new file mode 120000
index 0000000..b935bb4
--- /dev/null
+++ b/libbutl-odb/odb/polymorphic-object-result.txx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/polymorphic-object-result.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/post.hxx b/libbutl-odb/odb/post.hxx
new file mode 120000
index 0000000..64aba2c
--- /dev/null
+++ b/libbutl-odb/odb/post.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/post.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/pre.hxx b/libbutl-odb/odb/pre.hxx
new file mode 120000
index 0000000..f1acec8
--- /dev/null
+++ b/libbutl-odb/odb/pre.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/pre.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/prepared-query.cxx b/libbutl-odb/odb/prepared-query.cxx
new file mode 120000
index 0000000..02adc31
--- /dev/null
+++ b/libbutl-odb/odb/prepared-query.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/prepared-query.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/prepared-query.hxx b/libbutl-odb/odb/prepared-query.hxx
new file mode 120000
index 0000000..a512cbb
--- /dev/null
+++ b/libbutl-odb/odb/prepared-query.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/prepared-query.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/query-dynamic.cxx b/libbutl-odb/odb/query-dynamic.cxx
new file mode 120000
index 0000000..9d09183
--- /dev/null
+++ b/libbutl-odb/odb/query-dynamic.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/query-dynamic.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/query-dynamic.hxx b/libbutl-odb/odb/query-dynamic.hxx
new file mode 120000
index 0000000..742ee6e
--- /dev/null
+++ b/libbutl-odb/odb/query-dynamic.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/query-dynamic.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/query-dynamic.ixx b/libbutl-odb/odb/query-dynamic.ixx
new file mode 120000
index 0000000..1857aac
--- /dev/null
+++ b/libbutl-odb/odb/query-dynamic.ixx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/query-dynamic.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/query-dynamic.txx b/libbutl-odb/odb/query-dynamic.txx
new file mode 120000
index 0000000..6f3d196
--- /dev/null
+++ b/libbutl-odb/odb/query-dynamic.txx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/query-dynamic.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/query.hxx b/libbutl-odb/odb/query.hxx
new file mode 120000
index 0000000..1012caa
--- /dev/null
+++ b/libbutl-odb/odb/query.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/query.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/result.cxx b/libbutl-odb/odb/result.cxx
new file mode 120000
index 0000000..1a4accb
--- /dev/null
+++ b/libbutl-odb/odb/result.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/result.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/result.hxx b/libbutl-odb/odb/result.hxx
new file mode 120000
index 0000000..19ecb55
--- /dev/null
+++ b/libbutl-odb/odb/result.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/result.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/result.txx b/libbutl-odb/odb/result.txx
new file mode 120000
index 0000000..c19db9b
--- /dev/null
+++ b/libbutl-odb/odb/result.txx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/result.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/schema-catalog-impl.hxx b/libbutl-odb/odb/schema-catalog-impl.hxx
new file mode 120000
index 0000000..46b2940
--- /dev/null
+++ b/libbutl-odb/odb/schema-catalog-impl.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/schema-catalog-impl.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/schema-catalog.cxx b/libbutl-odb/odb/schema-catalog.cxx
new file mode 120000
index 0000000..6489260
--- /dev/null
+++ b/libbutl-odb/odb/schema-catalog.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/schema-catalog.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/schema-catalog.hxx b/libbutl-odb/odb/schema-catalog.hxx
new file mode 120000
index 0000000..3eac326
--- /dev/null
+++ b/libbutl-odb/odb/schema-catalog.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/schema-catalog.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/schema-version.hxx b/libbutl-odb/odb/schema-version.hxx
new file mode 120000
index 0000000..e151791
--- /dev/null
+++ b/libbutl-odb/odb/schema-version.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/schema-version.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/section.cxx b/libbutl-odb/odb/section.cxx
new file mode 120000
index 0000000..554e98a
--- /dev/null
+++ b/libbutl-odb/odb/section.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/section.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/section.hxx b/libbutl-odb/odb/section.hxx
new file mode 120000
index 0000000..c56cc2b
--- /dev/null
+++ b/libbutl-odb/odb/section.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/section.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/session.cxx b/libbutl-odb/odb/session.cxx
new file mode 120000
index 0000000..4fd4e61
--- /dev/null
+++ b/libbutl-odb/odb/session.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/session.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/session.hxx b/libbutl-odb/odb/session.hxx
new file mode 120000
index 0000000..b614bf3
--- /dev/null
+++ b/libbutl-odb/odb/session.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/session.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/session.ixx b/libbutl-odb/odb/session.ixx
new file mode 120000
index 0000000..8301774
--- /dev/null
+++ b/libbutl-odb/odb/session.ixx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/session.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/session.txx b/libbutl-odb/odb/session.txx
new file mode 120000
index 0000000..78525ff
--- /dev/null
+++ b/libbutl-odb/odb/session.txx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/session.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/simple-object-result.hxx b/libbutl-odb/odb/simple-object-result.hxx
new file mode 120000
index 0000000..75ff145
--- /dev/null
+++ b/libbutl-odb/odb/simple-object-result.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/simple-object-result.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/simple-object-result.txx b/libbutl-odb/odb/simple-object-result.txx
new file mode 120000
index 0000000..24a73c6
--- /dev/null
+++ b/libbutl-odb/odb/simple-object-result.txx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/simple-object-result.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/auto-handle.hxx b/libbutl-odb/odb/sqlite/auto-handle.hxx
new file mode 120000
index 0000000..d2beea3
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/auto-handle.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/auto-handle.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/binding.hxx b/libbutl-odb/odb/sqlite/binding.hxx
new file mode 120000
index 0000000..368fe4f
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/binding.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/binding.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/blob-stream.hxx b/libbutl-odb/odb/sqlite/blob-stream.hxx
new file mode 120000
index 0000000..a669754
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/blob-stream.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/blob-stream.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/blob.hxx b/libbutl-odb/odb/sqlite/blob.hxx
new file mode 120000
index 0000000..39952c3
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/blob.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/blob.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/connection-factory.cxx b/libbutl-odb/odb/sqlite/connection-factory.cxx
new file mode 120000
index 0000000..24bc557
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/connection-factory.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/connection-factory.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/connection-factory.hxx b/libbutl-odb/odb/sqlite/connection-factory.hxx
new file mode 120000
index 0000000..a0628ec
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/connection-factory.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/connection-factory.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/connection.cxx b/libbutl-odb/odb/sqlite/connection.cxx
new file mode 120000
index 0000000..ab9dac9
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/connection.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/connection.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/connection.hxx b/libbutl-odb/odb/sqlite/connection.hxx
new file mode 120000
index 0000000..b191dcf
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/connection.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/connection.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/connection.ixx b/libbutl-odb/odb/sqlite/connection.ixx
new file mode 120000
index 0000000..d46f148
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/connection.ixx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/connection.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/container-statements.hxx b/libbutl-odb/odb/sqlite/container-statements.hxx
new file mode 120000
index 0000000..bd7fe17
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/container-statements.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/container-statements.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/container-statements.txx b/libbutl-odb/odb/sqlite/container-statements.txx
new file mode 120000
index 0000000..6fc9bef
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/container-statements.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/container-statements.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/database.cxx b/libbutl-odb/odb/sqlite/database.cxx
new file mode 120000
index 0000000..d8e8079
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/database.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/database.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/database.hxx b/libbutl-odb/odb/sqlite/database.hxx
new file mode 120000
index 0000000..008d1fc
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/database.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/database.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/database.ixx b/libbutl-odb/odb/sqlite/database.ixx
new file mode 120000
index 0000000..52a723c
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/database.ixx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/database.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/details/config.hxx b/libbutl-odb/odb/sqlite/details/config.hxx
new file mode 120000
index 0000000..ba48e30
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/details/config.hxx
@@ -0,0 +1 @@
+../../../../upstream/odb/libodb-sqlite/odb/sqlite/details/config.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/details/conversion.hxx b/libbutl-odb/odb/sqlite/details/conversion.hxx
new file mode 120000
index 0000000..41e31b4
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/details/conversion.hxx
@@ -0,0 +1 @@
+../../../../upstream/odb/libodb-sqlite/odb/sqlite/details/conversion.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/details/export.hxx b/libbutl-odb/odb/sqlite/details/export.hxx
new file mode 120000
index 0000000..22a9ea3
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/details/export.hxx
@@ -0,0 +1 @@
+../../../../upstream/odb/libodb-sqlite/odb/sqlite/details/export.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/details/options.cxx b/libbutl-odb/odb/sqlite/details/options.cxx
new file mode 120000
index 0000000..61950de
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/details/options.cxx
@@ -0,0 +1 @@
+../../../../upstream/odb/libodb-sqlite/odb/sqlite/details/pregenerated/odb/sqlite/details/options.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/details/options.hxx b/libbutl-odb/odb/sqlite/details/options.hxx
new file mode 120000
index 0000000..7e674dd
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/details/options.hxx
@@ -0,0 +1 @@
+../../../../upstream/odb/libodb-sqlite/odb/sqlite/details/pregenerated/odb/sqlite/details/options.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/details/options.ixx b/libbutl-odb/odb/sqlite/details/options.ixx
new file mode 120000
index 0000000..f562a57
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/details/options.ixx
@@ -0,0 +1 @@
+../../../../upstream/odb/libodb-sqlite/odb/sqlite/details/pregenerated/odb/sqlite/details/options.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/error.cxx b/libbutl-odb/odb/sqlite/error.cxx
new file mode 120000
index 0000000..1bfc433
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/error.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/error.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/error.hxx b/libbutl-odb/odb/sqlite/error.hxx
new file mode 120000
index 0000000..c82f49f
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/error.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/error.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/exceptions.cxx b/libbutl-odb/odb/sqlite/exceptions.cxx
new file mode 120000
index 0000000..b49ae98
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/exceptions.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/exceptions.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/exceptions.hxx b/libbutl-odb/odb/sqlite/exceptions.hxx
new file mode 120000
index 0000000..ada5548
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/exceptions.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/exceptions.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/forward.hxx b/libbutl-odb/odb/sqlite/forward.hxx
new file mode 120000
index 0000000..a9b323c
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/forward.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/forward.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/no-id-object-result.hxx b/libbutl-odb/odb/sqlite/no-id-object-result.hxx
new file mode 120000
index 0000000..07ff3bd
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/no-id-object-result.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/no-id-object-result.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/no-id-object-result.txx b/libbutl-odb/odb/sqlite/no-id-object-result.txx
new file mode 120000
index 0000000..c20e86e
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/no-id-object-result.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/no-id-object-result.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/no-id-object-statements.hxx b/libbutl-odb/odb/sqlite/no-id-object-statements.hxx
new file mode 120000
index 0000000..572080c
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/no-id-object-statements.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/no-id-object-statements.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/no-id-object-statements.txx b/libbutl-odb/odb/sqlite/no-id-object-statements.txx
new file mode 120000
index 0000000..51bb914
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/no-id-object-statements.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/no-id-object-statements.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/polymorphic-object-result.hxx b/libbutl-odb/odb/sqlite/polymorphic-object-result.hxx
new file mode 120000
index 0000000..fe429c2
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/polymorphic-object-result.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/polymorphic-object-result.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/polymorphic-object-result.txx b/libbutl-odb/odb/sqlite/polymorphic-object-result.txx
new file mode 120000
index 0000000..e856368
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/polymorphic-object-result.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/polymorphic-object-result.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/polymorphic-object-statements.hxx b/libbutl-odb/odb/sqlite/polymorphic-object-statements.hxx
new file mode 120000
index 0000000..b3e8263
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/polymorphic-object-statements.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/polymorphic-object-statements.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/polymorphic-object-statements.txx b/libbutl-odb/odb/sqlite/polymorphic-object-statements.txx
new file mode 120000
index 0000000..ef05814
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/polymorphic-object-statements.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/polymorphic-object-statements.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/prepared-query.cxx b/libbutl-odb/odb/sqlite/prepared-query.cxx
new file mode 120000
index 0000000..3fce056
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/prepared-query.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/prepared-query.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/prepared-query.hxx b/libbutl-odb/odb/sqlite/prepared-query.hxx
new file mode 120000
index 0000000..585424d
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/prepared-query.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/prepared-query.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/query-const-expr.cxx b/libbutl-odb/odb/sqlite/query-const-expr.cxx
new file mode 120000
index 0000000..a37dc67
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/query-const-expr.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/query-const-expr.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/query-dynamic.cxx b/libbutl-odb/odb/sqlite/query-dynamic.cxx
new file mode 120000
index 0000000..0e7b56c
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/query-dynamic.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/query-dynamic.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/query-dynamic.hxx b/libbutl-odb/odb/sqlite/query-dynamic.hxx
new file mode 120000
index 0000000..11158d4
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/query-dynamic.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/query-dynamic.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/query-dynamic.ixx b/libbutl-odb/odb/sqlite/query-dynamic.ixx
new file mode 120000
index 0000000..babc299
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/query-dynamic.ixx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/query-dynamic.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/query-dynamic.txx b/libbutl-odb/odb/sqlite/query-dynamic.txx
new file mode 120000
index 0000000..6f3cb12
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/query-dynamic.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/query-dynamic.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/query.cxx b/libbutl-odb/odb/sqlite/query.cxx
new file mode 120000
index 0000000..9237561
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/query.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/query.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/query.hxx b/libbutl-odb/odb/sqlite/query.hxx
new file mode 120000
index 0000000..c0cb9b4
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/query.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/query.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/query.ixx b/libbutl-odb/odb/sqlite/query.ixx
new file mode 120000
index 0000000..9d38832
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/query.ixx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/query.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/query.txx b/libbutl-odb/odb/sqlite/query.txx
new file mode 120000
index 0000000..05c6033
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/query.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/query.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/section-statements.hxx b/libbutl-odb/odb/sqlite/section-statements.hxx
new file mode 120000
index 0000000..6edc0d5
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/section-statements.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/section-statements.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/section-statements.txx b/libbutl-odb/odb/sqlite/section-statements.txx
new file mode 120000
index 0000000..699c6b8
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/section-statements.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/section-statements.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/simple-object-result.hxx b/libbutl-odb/odb/sqlite/simple-object-result.hxx
new file mode 120000
index 0000000..9bed959
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/simple-object-result.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/simple-object-result.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/simple-object-result.txx b/libbutl-odb/odb/sqlite/simple-object-result.txx
new file mode 120000
index 0000000..7dbb9d1
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/simple-object-result.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/simple-object-result.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/simple-object-statements.cxx b/libbutl-odb/odb/sqlite/simple-object-statements.cxx
new file mode 120000
index 0000000..fe37130
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/simple-object-statements.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/simple-object-statements.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/simple-object-statements.hxx b/libbutl-odb/odb/sqlite/simple-object-statements.hxx
new file mode 120000
index 0000000..dbf222b
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/simple-object-statements.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/simple-object-statements.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/simple-object-statements.ixx b/libbutl-odb/odb/sqlite/simple-object-statements.ixx
new file mode 120000
index 0000000..863b920
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/simple-object-statements.ixx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/simple-object-statements.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/simple-object-statements.txx b/libbutl-odb/odb/sqlite/simple-object-statements.txx
new file mode 120000
index 0000000..8a3bcc7
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/simple-object-statements.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/simple-object-statements.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/sqlite-types.hxx b/libbutl-odb/odb/sqlite/sqlite-types.hxx
new file mode 120000
index 0000000..dda05ff
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/sqlite-types.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/sqlite-types.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/statement-cache.hxx b/libbutl-odb/odb/sqlite/statement-cache.hxx
new file mode 120000
index 0000000..0ef7a98
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/statement-cache.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/statement-cache.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/statement-cache.txx b/libbutl-odb/odb/sqlite/statement-cache.txx
new file mode 120000
index 0000000..d945fe2
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/statement-cache.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/statement-cache.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/statement.cxx b/libbutl-odb/odb/sqlite/statement.cxx
new file mode 120000
index 0000000..e84cbae
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/statement.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/statement.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/statement.hxx b/libbutl-odb/odb/sqlite/statement.hxx
new file mode 120000
index 0000000..40c7e11
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/statement.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/statement.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/statements-base.cxx b/libbutl-odb/odb/sqlite/statements-base.cxx
new file mode 120000
index 0000000..5cbbd29
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/statements-base.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/statements-base.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/statements-base.hxx b/libbutl-odb/odb/sqlite/statements-base.hxx
new file mode 120000
index 0000000..022238e
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/statements-base.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/statements-base.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/stream.cxx b/libbutl-odb/odb/sqlite/stream.cxx
new file mode 120000
index 0000000..43d8e7a
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/stream.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/stream.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/stream.hxx b/libbutl-odb/odb/sqlite/stream.hxx
new file mode 120000
index 0000000..4d8f752
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/stream.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/stream.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/text-stream.hxx b/libbutl-odb/odb/sqlite/text-stream.hxx
new file mode 120000
index 0000000..5dfb71b
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/text-stream.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/text-stream.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/text.hxx b/libbutl-odb/odb/sqlite/text.hxx
new file mode 120000
index 0000000..d214506
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/text.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/text.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/tracer.cxx b/libbutl-odb/odb/sqlite/tracer.cxx
new file mode 120000
index 0000000..eb1a179
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/tracer.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/tracer.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/tracer.hxx b/libbutl-odb/odb/sqlite/tracer.hxx
new file mode 120000
index 0000000..1bf3209
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/tracer.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/tracer.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/traits-calls.hxx b/libbutl-odb/odb/sqlite/traits-calls.hxx
new file mode 120000
index 0000000..d736213
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/traits-calls.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/traits-calls.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/traits.cxx b/libbutl-odb/odb/sqlite/traits.cxx
new file mode 120000
index 0000000..71c2b15
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/traits.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/traits.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/traits.hxx b/libbutl-odb/odb/sqlite/traits.hxx
new file mode 120000
index 0000000..0c06d44
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/traits.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/transaction-impl.cxx b/libbutl-odb/odb/sqlite/transaction-impl.cxx
new file mode 120000
index 0000000..006fca5
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/transaction-impl.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/transaction-impl.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/transaction-impl.hxx b/libbutl-odb/odb/sqlite/transaction-impl.hxx
new file mode 120000
index 0000000..c6b5f84
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/transaction-impl.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/transaction-impl.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/transaction.cxx b/libbutl-odb/odb/sqlite/transaction.cxx
new file mode 120000
index 0000000..72946da
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/transaction.cxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/transaction.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/transaction.hxx b/libbutl-odb/odb/sqlite/transaction.hxx
new file mode 120000
index 0000000..1a1b354
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/transaction.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/transaction.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/transaction.ixx b/libbutl-odb/odb/sqlite/transaction.ixx
new file mode 120000
index 0000000..67da3ef
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/transaction.ixx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/transaction.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/version.hxx b/libbutl-odb/odb/sqlite/version.hxx
new file mode 100644
index 0000000..e604c17
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/version.hxx
@@ -0,0 +1,65 @@
+// file : odb/sqlite/version.hxx.in
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef LIBODB_SQLITE_VERSION // Note: using the version macro itself.
+
+// New numeric version format is AAAAABBBBBCCCCCDDDE where:
+//
+// AAAAA - major version number
+// BBBBB - minor version number
+// CCCCC - bugfix version number
+// DDD - alpha / beta (DDD + 500) version number
+// E - final (0) / snapshot (1)
+//
+// When DDDE is not 0, 1 is subtracted from AAAAABBBBBCCCCC. For example:
+//
+// Version AAAAABBBBBCCCCCDDDE
+//
+// 0.1.0 0000000001000000000
+// 0.1.2 0000000001000020000
+// 1.2.3 0000100002000030000
+// 2.2.0-a.1 0000200001999990010
+// 3.0.0-b.2 0000299999999995020
+// 2.2.0-a.1.z 0000200001999990011
+//
+#define LIBODB_SQLITE_VERSION_FULL 200004999995261ULL
+#define LIBODB_SQLITE_VERSION_STR "2.5.0-b.26.20240502090701.7ce5b6d18b67"
+#define LIBODB_SQLITE_VERSION_ID "2.5.0-b.26.7ce5b6d18b67"
+
+#define LIBODB_SQLITE_VERSION_MAJOR 2
+#define LIBODB_SQLITE_VERSION_MINOR 5
+#define LIBODB_SQLITE_VERSION_PATCH 0
+
+#define LIBODB_SQLITE_PRE_RELEASE true
+
+#define LIBODB_SQLITE_SNAPSHOT 20240502090701ULL
+#define LIBODB_SQLITE_SNAPSHOT_ID "7ce5b6d18b67"
+
+#include <odb/version.hxx>
+
+#ifdef LIBODB_VERSION_FULL
+# if !(LIBODB_VERSION_FULL == 200004999995261ULL && LIBODB_SNAPSHOT == 20240502090701ULL)
+# error incompatible libodb version, libodb == 2.5.0-b.26.20240502090701.7ce5b6d18b67 is required
+# endif
+#endif
+
+
+// Old/deprecated numeric version format is AABBCCDD where:
+//
+// AA - major version number
+// BB - minor version number
+// CC - bugfix version number
+// DD - alpha / beta (DD + 50) version number
+//
+// When DD is not 00, 1 is subtracted from AABBCC. For example:
+//
+// Version AABBCCDD
+// 2.0.0 02000000
+// 2.1.0 02010000
+// 2.1.1 02010100
+// 2.2.0.a1 02019901
+// 3.0.0.b2 02999952
+//
+#define LIBODB_SQLITE_VERSION 2049976
+
+#endif // LIBODB_SQLITE_VERSION
diff --git a/libbutl-odb/odb/sqlite/view-result.hxx b/libbutl-odb/odb/sqlite/view-result.hxx
new file mode 120000
index 0000000..bdd35c3
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/view-result.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/view-result.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/view-result.txx b/libbutl-odb/odb/sqlite/view-result.txx
new file mode 120000
index 0000000..c6219bc
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/view-result.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/view-result.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/view-statements.hxx b/libbutl-odb/odb/sqlite/view-statements.hxx
new file mode 120000
index 0000000..d0c22cb
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/view-statements.hxx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/view-statements.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/sqlite/view-statements.txx b/libbutl-odb/odb/sqlite/view-statements.txx
new file mode 120000
index 0000000..f522d37
--- /dev/null
+++ b/libbutl-odb/odb/sqlite/view-statements.txx
@@ -0,0 +1 @@
+../../../upstream/odb/libodb-sqlite/odb/sqlite/view-statements.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/statement-processing-common.hxx b/libbutl-odb/odb/statement-processing-common.hxx
new file mode 120000
index 0000000..2a12e3f
--- /dev/null
+++ b/libbutl-odb/odb/statement-processing-common.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/statement-processing-common.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/statement-processing.cxx b/libbutl-odb/odb/statement-processing.cxx
new file mode 120000
index 0000000..2a4d084
--- /dev/null
+++ b/libbutl-odb/odb/statement-processing.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/statement-processing.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/statement.cxx b/libbutl-odb/odb/statement.cxx
new file mode 120000
index 0000000..057d7cf
--- /dev/null
+++ b/libbutl-odb/odb/statement.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/statement.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/statement.hxx b/libbutl-odb/odb/statement.hxx
new file mode 120000
index 0000000..e92cc46
--- /dev/null
+++ b/libbutl-odb/odb/statement.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/statement.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/std-array-traits.hxx b/libbutl-odb/odb/std-array-traits.hxx
new file mode 120000
index 0000000..308845c
--- /dev/null
+++ b/libbutl-odb/odb/std-array-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/std-array-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/std-deque-traits.hxx b/libbutl-odb/odb/std-deque-traits.hxx
new file mode 120000
index 0000000..7ccb3ec
--- /dev/null
+++ b/libbutl-odb/odb/std-deque-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/std-deque-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/std-forward-list-traits.hxx b/libbutl-odb/odb/std-forward-list-traits.hxx
new file mode 120000
index 0000000..67c2b47
--- /dev/null
+++ b/libbutl-odb/odb/std-forward-list-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/std-forward-list-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/std-list-traits.hxx b/libbutl-odb/odb/std-list-traits.hxx
new file mode 120000
index 0000000..25e8745
--- /dev/null
+++ b/libbutl-odb/odb/std-list-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/std-list-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/std-map-traits.hxx b/libbutl-odb/odb/std-map-traits.hxx
new file mode 120000
index 0000000..a1d18e2
--- /dev/null
+++ b/libbutl-odb/odb/std-map-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/std-map-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/std-set-traits.hxx b/libbutl-odb/odb/std-set-traits.hxx
new file mode 120000
index 0000000..7106505
--- /dev/null
+++ b/libbutl-odb/odb/std-set-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/std-set-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/std-unordered-map-traits.hxx b/libbutl-odb/odb/std-unordered-map-traits.hxx
new file mode 120000
index 0000000..560c9ff
--- /dev/null
+++ b/libbutl-odb/odb/std-unordered-map-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/std-unordered-map-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/std-unordered-set-traits.hxx b/libbutl-odb/odb/std-unordered-set-traits.hxx
new file mode 120000
index 0000000..7738e1a
--- /dev/null
+++ b/libbutl-odb/odb/std-unordered-set-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/std-unordered-set-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/std-vector-traits.hxx b/libbutl-odb/odb/std-vector-traits.hxx
new file mode 120000
index 0000000..f837306
--- /dev/null
+++ b/libbutl-odb/odb/std-vector-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/std-vector-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/tracer.cxx b/libbutl-odb/odb/tracer.cxx
new file mode 120000
index 0000000..403561c
--- /dev/null
+++ b/libbutl-odb/odb/tracer.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/tracer.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/tracer.hxx b/libbutl-odb/odb/tracer.hxx
new file mode 120000
index 0000000..c3ea47c
--- /dev/null
+++ b/libbutl-odb/odb/tracer.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/tracer.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/traits.hxx b/libbutl-odb/odb/traits.hxx
new file mode 120000
index 0000000..d64b1c3
--- /dev/null
+++ b/libbutl-odb/odb/traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/transaction.cxx b/libbutl-odb/odb/transaction.cxx
new file mode 120000
index 0000000..737baca
--- /dev/null
+++ b/libbutl-odb/odb/transaction.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/transaction.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/transaction.hxx b/libbutl-odb/odb/transaction.hxx
new file mode 120000
index 0000000..17d71d9
--- /dev/null
+++ b/libbutl-odb/odb/transaction.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/transaction.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/transaction.ixx b/libbutl-odb/odb/transaction.ixx
new file mode 120000
index 0000000..a54315d
--- /dev/null
+++ b/libbutl-odb/odb/transaction.ixx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/transaction.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/vector-impl.cxx b/libbutl-odb/odb/vector-impl.cxx
new file mode 120000
index 0000000..666ef11
--- /dev/null
+++ b/libbutl-odb/odb/vector-impl.cxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/vector-impl.cxx \ No newline at end of file
diff --git a/libbutl-odb/odb/vector-impl.hxx b/libbutl-odb/odb/vector-impl.hxx
new file mode 120000
index 0000000..1a6d128
--- /dev/null
+++ b/libbutl-odb/odb/vector-impl.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/vector-impl.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/vector-impl.ixx b/libbutl-odb/odb/vector-impl.ixx
new file mode 120000
index 0000000..c432ff8
--- /dev/null
+++ b/libbutl-odb/odb/vector-impl.ixx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/vector-impl.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/vector-traits.hxx b/libbutl-odb/odb/vector-traits.hxx
new file mode 120000
index 0000000..0b52905
--- /dev/null
+++ b/libbutl-odb/odb/vector-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/vector-traits.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/vector-traits.txx b/libbutl-odb/odb/vector-traits.txx
new file mode 120000
index 0000000..28991f3
--- /dev/null
+++ b/libbutl-odb/odb/vector-traits.txx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/vector-traits.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/vector.hxx b/libbutl-odb/odb/vector.hxx
new file mode 120000
index 0000000..7e0cb3f
--- /dev/null
+++ b/libbutl-odb/odb/vector.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/vector.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/vector.ixx b/libbutl-odb/odb/vector.ixx
new file mode 120000
index 0000000..87593d2
--- /dev/null
+++ b/libbutl-odb/odb/vector.ixx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/vector.ixx \ No newline at end of file
diff --git a/libbutl-odb/odb/version.hxx b/libbutl-odb/odb/version.hxx
new file mode 100644
index 0000000..370cda1
--- /dev/null
+++ b/libbutl-odb/odb/version.hxx
@@ -0,0 +1,65 @@
+// file : odb/version.hxx.in
+// license : GNU GPL v2; see accompanying LICENSE file
+
+#ifndef LIBODB_VERSION // Note: using the version macro itself.
+
+// New numeric version format is AAAAABBBBBCCCCCDDDE where:
+//
+// AAAAA - major version number
+// BBBBB - minor version number
+// CCCCC - bugfix version number
+// DDD - alpha / beta (DDD + 500) version number
+// E - final (0) / snapshot (1)
+//
+// When DDDE is not 0, 1 is subtracted from AAAAABBBBBCCCCC. For example:
+//
+// Version AAAAABBBBBCCCCCDDDE
+//
+// 0.1.0 0000000001000000000
+// 0.1.2 0000000001000020000
+// 1.2.3 0000100002000030000
+// 2.2.0-a.1 0000200001999990010
+// 3.0.0-b.2 0000299999999995020
+// 2.2.0-a.1.z 0000200001999990011
+//
+#define LIBODB_VERSION_FULL 200004999995261ULL
+#define LIBODB_VERSION_STR "2.5.0-b.26.20240502090701.7ce5b6d18b67"
+#define LIBODB_VERSION_ID "2.5.0-b.26.7ce5b6d18b67"
+
+#define LIBODB_VERSION_MAJOR 2
+#define LIBODB_VERSION_MINOR 5
+#define LIBODB_VERSION_PATCH 0
+
+#define LIBODB_PRE_RELEASE true
+
+#define LIBODB_SNAPSHOT 20240502090701ULL
+#define LIBODB_SNAPSHOT_ID "7ce5b6d18b67"
+
+
+// Old/deprecated numeric version format is AABBCCDD where:
+//
+// AA - major version number
+// BB - minor version number
+// CC - bugfix version number
+// DD - alpha / beta (DD + 50) version number
+//
+// When DD is not 00, 1 is subtracted from AABBCC. For example:
+//
+// Version AABBCCDD
+// 2.0.0 02000000
+// 2.1.0 02010000
+// 2.1.1 02010100
+// 2.2.0.a1 02019901
+// 3.0.0.b2 02999952
+//
+
+// ODB interface version: minor, major, and alpha/beta versions.
+//
+#define ODB_VERSION 20476
+#define ODB_VERSION_STR "2.5-b.26"
+
+// libodb version: interface version plus the bugfix version.
+//
+#define LIBODB_VERSION 2049976
+
+#endif // LIBODB_VERSION
diff --git a/libbutl-odb/odb/view-image.hxx b/libbutl-odb/odb/view-image.hxx
new file mode 120000
index 0000000..8f2aec1
--- /dev/null
+++ b/libbutl-odb/odb/view-image.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/view-image.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/view-result.hxx b/libbutl-odb/odb/view-result.hxx
new file mode 120000
index 0000000..314e6da
--- /dev/null
+++ b/libbutl-odb/odb/view-result.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/view-result.hxx \ No newline at end of file
diff --git a/libbutl-odb/odb/view-result.txx b/libbutl-odb/odb/view-result.txx
new file mode 120000
index 0000000..9e4a6a3
--- /dev/null
+++ b/libbutl-odb/odb/view-result.txx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/view-result.txx \ No newline at end of file
diff --git a/libbutl-odb/odb/wrapper-traits.hxx b/libbutl-odb/odb/wrapper-traits.hxx
new file mode 120000
index 0000000..9641baf
--- /dev/null
+++ b/libbutl-odb/odb/wrapper-traits.hxx
@@ -0,0 +1 @@
+../../upstream/odb/libodb/odb/wrapper-traits.hxx \ No newline at end of file