madlib-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Frank McQuillan <fmcquil...@pivotal.io>
Subject Re: Issues compiling MADlib 1.12 for Postgres 10
Date Fri, 17 Aug 2018 18:10:04 GMT
gr8, let us know if that goes OK Mauricio, and if u have any other questions

Frank

On Fri, Aug 17, 2018 at 3:56 AM, Mauricio Scheffer <
mauricioscheffer@gmail.com> wrote:

> 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