madlib-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mauricio Scheffer <mauricioschef...@gmail.com>
Subject Re: Issues compiling MADlib 1.12 for Postgres 10
Date Fri, 17 Aug 2018 10:56:23 GMT
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 <riyer@apache.org> wrote:

> + dev@madlib.apache
>
> 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 <okislal@pivotal.io> 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 <
>> mauricioscheffer@gmail.com> 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
>>>
>>

Mime
View raw message