In my current installation of LedgerSMB, the tables are in a schema other
than public, because I installed it in a database where there are other
data in schema public. (The reason I did that is that I want to link tables
in schema public and LedgerSMB tables, but I have not done it yet.)
I could make it work relatively painlessly with LedgerSMB 1.3 by setting
db_namespace in ledgersmb.conf.
Recently (that is, very late!) I wanted to upgrade to LedgerSMB 1.5.24
(not 1.6 because my server is still under Debian stretch). I think I could
upgrade the database correctly with setup.pl, but when running login.pl it
will not work because, according to Postgresql's logs, it insists on trying
to call the stored procedure public.setting_get, which does not exist.
Although I do not know perl, I tried to read the code to understand what
is going on. If I understood well, stored procedures are called by calling
directly or indirectly the perl function call_procedure in module PGObject,
which sets the schema to public when it is not specified. However, module
LedgerSMB also contains a function call_procedure which correctly sets the
schema, so the problem seems to be that sometimes PGObject's call_procedure
is called directly instead of module LedgerSMB's. I do not understand why,
because I do not know what constructs like $self->call_procedure or
__PACKAGE__->call_procedure do, but anyway this is very annoying for me,
because it means that LedgerSMB 1.5 just will not work with db_namespace
set to anything else than public.
Was this problem known? Is it corrected in a later version?