You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@madlib.apache.org by Mauricio Scheffer <ma...@gmail.com> on 2018/08/16 16:46:17 UTC

Issues compiling MADlib 1.12 for Postgres 10

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

Re: Issues compiling MADlib 1.12 for Postgres 10

Posted by Frank McQuillan <fm...@pivotal.io>.
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 <ri...@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 <ok...@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
>>>>
>>>

Re: Issues compiling MADlib 1.12 for Postgres 10

Posted by Frank McQuillan <fm...@pivotal.io>.
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 <ri...@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 <ok...@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
>>>>
>>>

Re: Issues compiling MADlib 1.12 for Postgres 10

Posted by Mauricio Scheffer <ma...@gmail.com>.
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 <ri...@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 <ok...@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
>>>
>>

Re: Issues compiling MADlib 1.12 for Postgres 10

Posted by Rahul Iyer <ri...@apache.org>.
+ 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 <ok...@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
>>
>

Re: Issues compiling MADlib 1.12 for Postgres 10

Posted by Rahul Iyer <ri...@apache.org>.
+ 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 <ok...@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
>>
>

Re: Issues compiling MADlib 1.12 for Postgres 10

Posted by Orhan Kislal <ok...@pivotal.io>.
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
>