Database migration screws up database names
Closed this issue · 2 comments
packages.db
from my instance of vanilla 5.1.1 contains databases with the following names:
bionic|main|amd64
bionic|main|i386
bionic|main|source
bionic|pkgbuild|amd64
bionic|pkgbuild|i386
bionic|pkgbuild|source
u|bionic|main|amd64
u|bionic|main|i386
u|bionic|pkgbuild|amd64
u|bionic|pkgbuild|i386
u|xenial|main|amd64
u|xenial|main|i386
u|xenial|pkgbuild|amd64
u|xenial|pkgbuild|i386
xenial|main|amd64
xenial|main|i386
xenial|main|source
xenial|pkgbuild|amd64
xenial|pkgbuild|i386
xenial|pkgbuild|source
(presented in the order in which they appear in a dump from db_dump
)
After multiversion 5.1.1 migrates packages.db
, it contains databases with the following names:
bionic|main|amd64
bionic|main|i3864
bionic|main|source
bionic|pkgbuild|amd64
bionic|pkgbuild|i3864
bionic|pkgbuild|source
d|bionic|main|amd64rce
d|bionic|main|i3864rce
d|bionic|pkgbuild|amd64
d|bionic|pkgbuild|i3864
d|xenial|main|amd643864
d|xenial|main|i38643864
d|xenial|pkgbuild|amd64
d|xenial|pkgbuild|i3864
u|bionic|main|amd643864
u|bionic|main|i38643864
u|bionic|pkgbuild|amd64
u|bionic|pkgbuild|i3864
u|xenial|main|amd643864
u|xenial|main|i38643864
u|xenial|pkgbuild|amd64
u|xenial|pkgbuild|i3864
xenial|main|amd64|i3864
xenial|main|i3864|i3864
xenial|main|sourcei3864
xenial|pkgbuild|amd6464
xenial|pkgbuild|i386464
xenial|pkgbuild|source4
Additionally, any data that was contained in databases whose names have changed is not migrated.
I believe the culprit is line 2107 of database.c. Instead of using Key.data
directly, it should probably be copied using strndup
with Key.size
, as is done in lines 372-377. It will have to be freed each time, however. Perhaps a strncpy
+realloc
solution would be more elegant.
We had the same issue and you fix solved the problem ! Thanks
Thanks for reporting this bug. I fixed it in the 5.2.0-multiple-versions branch (using strndup
).