[odb-users] another test from odb-tests-2.1.1 fails with
mariadb-5.5.28a
Hugo.Mildenberger at web.de
Hugo.Mildenberger at web.de
Tue Feb 5 12:37:44 EST 2013
Boris Kolpackov <boris at codesynthesis.com> wrote:
> I reviewed the code involved one more time and I might have found
> something that could cause this. Can you try these patches and
> let me know if they help?
>
> Boost: http://scm.codesynthesis.com/?p=odb/libodb-boost.git;a=patch;h=fa7c954409d6fa27440d965797f14c6c01397aee
> Qt: http://scm.codesynthesis.com/?p=odb/libodb-qt.git;a=patch;h=4503191a037be58e769613281f90efa5310e547e
>
> If that doesn't help, then I will try to create a minimal test using
> the C API that reproduces this issue.
Well, apparently the patch set fixed it. I say apparently because I'm not completely sure
about it, in turn because some Gentoo maintainers sometimes smuggle in small patches without
bumping the ebuild revision number. When reinstalling a package, a new patch set can be
loaded from a remote server in the background. I haven't yet checked all the details here,
but I've reinstalled MariaDB-5.5.28a.
A minimal test case would be useful for a upstream bug report anyway.
This error did also not occur when using the new MariaDB native client without yet having
applied this patch set.
By the way, I've observed that within the structure "st_mysql_time" the field "time_type"
is also not initialized by odb. Although the documentation officially states that callers
of mysql_stmt_bind_param may leave this field unassigned, one can not know if all developers
who eventually become involved will remember this statement.
But now comes the next failed test (with mmariadb-5.5.28a):
make[2]: Entering directory `/var/tmp/portage/dev-db/odb-2.1.1/work/
odb-tests-2.1.1-mysql/mysql/truncation'
./driver --options-file ../../db.options
driver: driver.cxx:78: int main(int, char**): Assertion `o->str_ == long_str' failed.
./../../tester: line 39: 8281 Aborted (core dumped)
./driver --options-file "$top_builddir/ db.options" > test.out
FAIL: ../../tester
============================================
1 of 1 test failed
Please report to odb-users at codesynthesis.com
============================================
make[2]: *** [check-TESTS] Fehler 1
make[2]: Leaving directory `/var/tmp/portage/dev-db/odb-2.1.1/work/odb-tests-2.1.1-mysql/mysql/truncation'
As far as I remember, exactly this error previously also happened with the MariaDB native client.
I've now put a trace statement in driver.cxx, just before the assertion:
o->str_:'cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccQp���@E�6'
long_str:'cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccc'
The wrong part starts after offset 0+256. When changing the length of long_str from 300 to 256,
this subtest runs ok. Setting length to 257, the test again fails.
When having commented out this subtest, the assertion (o->str_ == longer_str) failed, and after that
(p->vec_ == o.vec_) did not evaluate to true.
Kind regards
Hugo
More information about the odb-users
mailing list