[odb-users] Re: odb compiler schema generation issue

Michael Martin Moro sexymimi64 at gmail.com
Sat Feb 17 09:19:35 EST 2024


Hi, solving my own issue.

After all this time, I'm finally realizing that:

#pragma db model version(x,x)

Needs to be specified somewhere in order for an xml changelog to be 
generated. I guess I must've been including it wrong.

Sorry for the distrubance.

Le 17/02/2024 à 13:59, Michael Martin Moro a écrit :
>
> Hi !
>
> I've been trying to reproduce the Hello World example, but I don't get 
> the expected result in terms of schema. Here's the documentation I've 
> been using:
>
> https://www.codesynthesis.com/products/odb/doc/manual.xhtml#2
>
> It says that the following command would generate a person.xml file:
>
> odb -d mysql --generate-query --generate-schema person.hxx
>
> But it doesn't. Instead, it creates a person.sql file. Could it be 
> that the default value for `--schema-format` is actually `sql` ?
>
> When using the --schema-format option and set it to /embedded/ or 
> /separate/, the command no longer generates a sql file. But it doesn't 
> generate a changelog xml file either, even if the --changelog option 
> is explicitely specified. A person-schema.cxx file is generated as 
> expected when the value is set to /separate./
>
> It also seems that odb::database::schema_version() always returns 0, 
> regardless of the value set using #pragma db version, and regardless 
> of whether the database has already been created using 
> odb::schema_catalog::create_schema. The result is that it's not 
> possible to update the database schema without wiping off the entire 
> database.
>
> Odb version is 2.5.0-b.25.
>
> Any idea what would be causing such an issue ?
>
> ---
>
> Some more details:
>
> 1) If it helps, I've also noticed that the xml changlog files actually 
> still works in my older projects: basically, the xml changelog gets 
> updates if it already exists, but it never gets created if it doesn't 
> already exist. While in theory, that means I should be able to patch 
> this issue by manually creating the first changelog, in practice I 
> haven't been able to manually create an xml changelog that the odb 
> compiler actually reads from. And since the odb compiler no longer 
> generates the first iteration of that changelog, I haven't been able 
> to use changelogs in any new project.
>
> 2) This issue is not new. I use odb on a daily basis, and I've been 
> having issues with changelogs since summer 2022. At first I suspected 
> something was wrong with my setup, but I've actually built odb from 
> scratch on many virtual machines since, and this reproduces everywhere.
>
> 3) Verbose output of the odb command, trying to generate a xml 
> changelog for the person
>
> /usr/local/bin/odb -d pgsql --generate-query --generate-schema 
> --schema-format separate --changelog person.xml model.h -v
> Profile search paths:
>  /usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13
>  /usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/x86_64-redhat-linux
>  /usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/backward
>  /usr/lib/gcc/x86_64-redhat-linux/13/include
>  /usr/local/include
>  /usr/include
> Compiling model.h
> g++ -x c++ -std=c++98 -S -Wunknown-pragmas -Wno-deprecated 
> -fplugin=/usr/local/bin/odb.so -v 
> -fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13 
> -fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/x86_64-redhat-linux 
> -fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/backward 
> -fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/include 
> -fplugin-arg-odb-svc-path=/usr/local/include 
> -fplugin-arg-odb-svc-path=/usr/include -DODB_COMPILER 
> -DODB_COMPILER_VERSION=2049975 -DODB_DATABASE_PGSQL 
> -fplugin-arg-odb-database=pgsql -fplugin-arg-odb-generate-query 
> -fplugin-arg-odb-generate-schema 
> -fplugin-arg-odb-schema-format=separate 
> -fplugin-arg-odb-changelog=person.xml -fplugin-arg-odb-svc-file=model.h -
> Utilisation des specs internes.
> COLLECT_GCC=g++
> OFFLOAD_TARGET_NAMES=nvptx-none
> OFFLOAD_TARGET_DEFAULT=1
> Cible : x86_64-redhat-linux
> Configuré avec: ../configure --enable-bootstrap 
> --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,m2,lto 
> --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info 
> --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared 
> --enable-threads=posix --enable-checking=release --enable-multilib 
> --with-system-zlib --enable-__cxa_atexit 
> --disable-libunwind-exceptions --enable-gnu-unique-object 
> --enable-linker-build-id --with-gcc-major-version-only 
> --enable-libstdcxx-backtrace 
> --with-libstdcxx-zoneinfo=/usr/share/zoneinfo 
> --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array 
> --with-isl=/builddir/build/BUILD/gcc-13.2.1-20231011/obj-x86_64-redhat-linux/isl-install 
> --enable-offload-targets=nvptx-none --without-cuda-driver 
> --enable-offload-defaulted --enable-gnu-indirect-function --enable-cet 
> --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux 
> --with-build-config=bootstrap-lto --enable-link-serialization=1
> Modèle de thread: posix
> Algorithmes de compression LTO supportés: zlib zstd
> gcc version 13.2.1 20231011 (Red Hat 13.2.1-4) (GCC)
> COLLECT_GCC_OPTIONS='-std=c++98' '-S' '-Wunknown-pragmas' 
> '-Wno-deprecated' '-fplugin=/usr/local/bin/odb.so' '-v' 
> '-fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13' 
> '-fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/x86_64-redhat-linux' 
> '-fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/backward' 
> '-fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/include' 
> '-fplugin-arg-odb-svc-path=/usr/local/include' 
> '-fplugin-arg-odb-svc-path=/usr/include' '-D' 'ODB_COMPILER' '-D' 
> 'ODB_COMPILER_VERSION=2049975' '-D' 'ODB_DATABASE_PGSQL' 
> '-fplugin-arg-odb-database=pgsql' '-fplugin-arg-odb-generate-query' 
> '-fplugin-arg-odb-generate-schema' 
> '-fplugin-arg-odb-schema-format=separate' 
> '-fplugin-arg-odb-changelog=person.xml' 
> '-fplugin-arg-odb-svc-file=model.h' '-shared-libgcc' '-mtune=generic' 
> '-march=x86-64'
>  /usr/libexec/gcc/x86_64-redhat-linux/13/cc1plus -quiet -v 
> -iplugindir=/usr/lib/gcc/x86_64-redhat-linux/13/plugin -D_GNU_SOURCE 
> -D ODB_COMPILER -D ODB_COMPILER_VERSION=2049975 -D ODB_DATABASE_PGSQL 
> - -iplugindir=/usr/lib/gcc/x86_64-redhat-linux/13/plugin -quiet 
> -dumpbase - -mtune=generic -march=x86-64 -Wunknown-pragmas 
> -Wno-deprecated -std=c++98 -version -fplugin=/usr/local/bin/odb.so 
> -fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13 
> -fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/x86_64-redhat-linux 
> -fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/backward 
> -fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/include 
> -fplugin-arg-odb-svc-path=/usr/local/include 
> -fplugin-arg-odb-svc-path=/usr/include -fplugin-arg-odb-database=pgsql 
> -fplugin-arg-odb-generate-query -fplugin-arg-odb-generate-schema 
> -fplugin-arg-odb-schema-format=separate 
> -fplugin-arg-odb-changelog=person.xml 
> -fplugin-arg-odb-svc-file=model.h -o -.s
> GNU C++98 (GCC) version 13.2.1 20231011 (Red Hat 13.2.1-4) 
> (x86_64-redhat-linux)
>         compilé par GNU C version 13.2.1 20231011 (Red Hat 13.2.1-4), 
> GMP version 6.2.1, MPFR version 4.2.0-p12, MPC version 1.3.1, isl 
> version isl-0.24-GMP
>
> heuristiques GGC: --param ggc-min-expand=100 --param 
> ggc-min-heapsize=131072
> Versions of loaded plugins:
>  odb: 2.5.0-b.25
> le répertoire « /usr/lib/gcc/x86_64-redhat-linux/13/include-fixed » 
> est ignoré car inexistant
> le répertoire 
> « /usr/lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include » 
> est ignoré car inexistant
> la recherche pour #include "..." débute ici :
> la recherche pour #include <...> débute ici:
>  /usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13
>  /usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/x86_64-redhat-linux
>  /usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/backward
>  /usr/lib/gcc/x86_64-redhat-linux/13/include
>  /usr/local/include
>  /usr/include
> Fin de la liste de recherche.
> Compiler executable checksum: eec6ea8c5ebefd8c87c81ea2002f55e3
> COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/13/:/usr/libexec/gcc/x86_64-redhat-linux/13/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/13/:/usr/lib/gcc/x86_64-redhat-linux/
> LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/13/:/usr/lib/gcc/x86_64-redhat-linux/13/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/13/../../../:/lib/:/usr/lib/
> COLLECT_GCC_OPTIONS='-std=c++98' '-S' '-Wunknown-pragmas' 
> '-Wno-deprecated' '-fplugin=/usr/local/bin/odb.so' '-v' 
> '-fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13' 
> '-fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/x86_64-redhat-linux' 
> '-fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/backward' 
> '-fplugin-arg-odb-svc-path=/usr/lib/gcc/x86_64-redhat-linux/13/include' 
> '-fplugin-arg-odb-svc-path=/usr/local/include' 
> '-fplugin-arg-odb-svc-path=/usr/include' '-D' 'ODB_COMPILER' '-D' 
> 'ODB_COMPILER_VERSION=2049975' '-D' 'ODB_DATABASE_PGSQL' 
> '-fplugin-arg-odb-database=pgsql' '-fplugin-arg-odb-generate-query' 
> '-fplugin-arg-odb-generate-schema' 
> '-fplugin-arg-odb-schema-format=separate' 
> '-fplugin-arg-odb-changelog=person.xml' 
> '-fplugin-arg-odb-svc-file=model.h' '-shared-libgcc' '-mtune=generic' 
> '-march=x86-64'
>


More information about the odb-users mailing list