Thanks Orhan, Rahul. I was able to get past that error by including <utils/regproc.h> in src/ports/postgres/dbconnector/UDF_impl.hpp and src/ports/postgres/dbconnector/Backend.hpp I got a couple other similar errors which I was able to easily patch and finished compiling but then at runtime I got
could not load library "$libdir/libmadlib.so": ERROR: could not load library "/usr/lib/postgresql/10/lib/libmadlib.so": /usr/lib/postgresql/10/lib/libmadlib.so: undefined symbol: _Z16format_procedurej so I guess I'll just have to upgrade both Postgres and MADlib at the same time. Regards, Mauricio On Thu, Aug 16, 2018 at 6:38 PM Rahul Iyer <[email protected]> wrote: > + [email protected] > > From the developer perspective on why it's not working: 'format_procedure' > is a postgres function which is declared in regproc.h. Looking at the 10_3 > branch it's still present in that file, so the declaration should be > available to the compiler. > > Maybe search in the INCLUDEDIR-SERVER directory (available by running > pg_config) if 'format_procedure' is declared in regproc.h? It's possible > it's an include issue that's just showing up with that function. > > > On Thu, Aug 16, 2018 at 10:18 AM Orhan Kislal <[email protected]> wrote: > >> Hi Mauricio, >> >> Unfortunately, MADlib 1.12 does not support PG 10. Here is the >> compatibility matrix: >> >> https://cwiki.apache.org/confluence/display/MADLIB/FAQ#FAQ-Q1-2WhatdatabaseplatformsdoesMADlibsupportandwhatistheupgradematrix >> ? >> Earliest MADlib version to support PG 10 officially is 1.14 but I would >> suggest using our latest release, 1.15. >> >> Please let us know if you have any other questions. >> >> Thanks, >> >> Orhan >> >> On Thu, Aug 16, 2018 at 9:46 AM Mauricio Scheffer < >> [email protected]> wrote: >> >>> Hi, >>> >>> I need to upgrade an existing Postgres 9.5 + Madlib 1.12 to Postgres 10. >>> To avoid potential issues I'd like to skip upgrading Madlib, at least >>> for now. It's been working fine for us for quite some time, we don't need >>> any new features. >>> >>> However I'm having issues compiling Madlib 1.12 on Postgres 10. >>> Here's what I'm doing: >>> >>> docker run --rm -it madlib/postgres_10.0 /bin/bash >>> >>> cd >>> wget http://api.pgxn.org/dist/madlib/1.12.0/madlib-1.12.0.zip >>> unzip madlib-1.12.0.zip >>> cd madlib-1.12.0 >>> cp -R src/ports/postgres/9.6/ src/ports/postgres/10.0/ >>> cp src/ports/postgres/cmake/FindPostgreSQL_9_6.cmake >>> src/ports/postgres/cmake/FindPostgreSQL_10_0.cmake >>> ./configure >>> make >>> >>> and this is the compile error I'm getting: >>> >>> [ 42%] Building CXX object >>> src/ports/postgres/10.0/CMakeFiles/madlib_postgresql_10_0.dir/__/__/__/modules/assoc_rules/assoc_rules.cpp.o >>> In file included from >>> /root/madlib-1.12.0/src/modules/assoc_rules/assoc_rules.cpp:11:0: >>> /root/madlib-1.12.0/src/ports/postgres/dbconnector/Backend.hpp: In >>> function ‘char* >>> madlib::dbconnector::postgres::{anonymous}::madlib_format_procedure(Oid)’: >>> /root/madlib-1.12.0/src/ports/postgres/dbconnector/Backend.hpp:35:65: >>> error: ‘format_procedure’ was not declared in this scope >>> char*, format_procedure, (Oid procedure_oid), (procedure_oid)) >>> ^ >>> /root/madlib-1.12.0/src/ports/postgres/dbconnector/dbconnector.hpp:166:27: >>> note: in definition of macro ‘MADLIB_WRAP_PG_FUNC’ >>> _result = _pgfunc _passedlist; \ >>> ^ >>> In file included from /usr/include/postgresql/10/server/postgres.h:48:0, >>> from >>> /root/madlib-1.12.0/src/ports/postgres/dbconnector/dbconnector.hpp:24, >>> from >>> /root/madlib-1.12.0/src/modules/assoc_rules/assoc_rules.cpp:11: >>> /root/madlib-1.12.0/src/ports/postgres/dbconnector/UDF_impl.hpp: In >>> static member function ‘static Datum >>> madlib::dbconnector::postgres::UDF::call(FunctionCallInfo)’: >>> /root/madlib-1.12.0/src/ports/postgres/dbconnector/UDF_impl.hpp:206:56: >>> error: there are no arguments to ‘format_procedure’ that depend on a >>> template parameter, so a declaration of ‘format_procedure’ must be >>> available [-fpermissive] >>> format_procedure(fcinfo->flinfo->fn_oid), >>> ^ >>> /root/madlib-1.12.0/src/ports/postgres/dbconnector/UDF_impl.hpp:206:56: >>> note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing >>> the use of an undeclared name is deprecated) >>> src/ports/postgres/10.0/CMakeFiles/madlib_postgresql_10_0.dir/build.make:62: >>> recipe for target >>> 'src/ports/postgres/10.0/CMakeFiles/madlib_postgresql_10_0.dir/__/__/__/modules/assoc_rules/assoc_rules.cpp.o' >>> failed >>> >>> >>> I find this odd as I used the same version of g++ to build the same >>> version of MADlib (1.12) on Postgres 9.5 >>> I've not worked in C++ for many years... would it be safe to set >>> -fpermissive? How would I do that with MADlib's build scripts? I >>> tried ./configure CXXFLAGS="-fpermissive" but it doesn't seem to do >>> anything. >>> >>> Many thanks. >>> >>> -- >>> Mauricio >>> >>
