IITDBGroup / gprom

GProM is a middleware that adds support for provenance to database backends.
http://www.cs.iit.edu/%7edbgroup/research/gprom.php
Apache License 2.0
8 stars 5 forks source link

MonetDB metadata lookup plugin crashes at second error #47

Closed lordpretzel closed 6 years ago

lordpretzel commented 6 years ago

Once the second time an error is thrown, we crash trying to free an already free'd or never allocated pointer:

./src/command_line/gprom -backend monetdb -host 127.0.0.1 -user monetdb -passwd test -db gpromtest -port 50000 -loglevel 2
Welcome to the GProM 1.0.2 command line interface
Please input a SQL command, '\q' to exit the program, or '\h' for help
======================================================================

Oracle SQL - MonetDB:monetdb@127.0.0.1:gpromtest$PROVENANCE OF (SELECT sum(a) FROM r);
MAPI  = monetdb@127.0.0.1:50000
QUERY = WITH _temp_view_0 AS (
        SELECT /*+ materialize */ F0.AGGR_0 AS AGGR_0, F1.PROV_r_a AS PROV_r_a, F1.PROV_r_b AS PROV_r_b
        FROM ((
        SELECT sum(F0.a) AS AGGR_0
        FROM r AS F0) F0 LEFT OUTER JOIN (
        SELECT F0.a AS a, F0.b AS b, F0.a AS PROV_r_a, F0.b AS PROV_r_b
        FROM r AS F0) F1 ON ((1 = 1))))
        SELECT F0.AGGR_0 AS "sum(a)", F0.PROV_r_a AS PROV_r_a, F0.PROV_r_b AS PROV_r_b
        FROM (SELECT * FROM _temp_view_0) F0

ERROR (metadata_lookup_monetdb.c:176) mapi query error:
syntax error, unexpected IDENT, expecting ')' in: "with _temp_view_0 as (
select /*+ materialize */ f0.aggr_0 as aggr_0, f1.prov_r_"

ERROR (exception.c:145) exception was thrown (RECOVERABLE) metadata_lookup_monetdb.c - 504 - <WITH _temp_view_0 AS (
SELECT /*+ materialize */ F0.AGGR_0 AS AGGR_0, F1.PROV_r_a AS PROV_r_a, F1.PROV_r_b AS PROV_r_b
FROM ((
SELECT sum(F0.a) AS AGGR_0
FROM r AS F0) F0 LEFT OUTER JOIN (
SELECT F0.a AS a, F0.b AS b, F0.a AS PROV_r_a, F0.b AS PROV_r_b
FROM r AS F0) F1 ON ((1 = 1))))
SELECT F0.AGGR_0 AS "sum(a)", F0.PROV_r_a AS PROV_r_a, F0.PROV_r_b AS PROV_r_b
FROM (SELECT * FROM _temp_view_0) F0

>

Error occured
(metadata_lookup_monetdb.c:504) 
WITH _temp_view_0 AS (
SELECT /*+ materialize */ F0.AGGR_0 AS AGGR_0, F1.PROV_r_a AS PROV_r_a, F1.PROV_r_b AS PROV_r_b
FROM ((
SELECT sum(F0.a) AS AGGR_0
FROM r AS F0) F0 LEFT OUTER JOIN (
SELECT F0.a AS a, F0.b AS b, F0.a AS PROV_r_a, F0.b AS PROV_r_b
FROM r AS F0) F1 ON ((1 = 1))))
SELECT F0.AGGR_0 AS "sum(a)", F0.PROV_r_a AS PROV_r_a, F0.PROV_r_b AS PROV_r_b
FROM (SELECT * FROM _temp_view_0) F0

ABORT BASED ON EXCEPTION wipe <QUERY_CONTEXT>

Oracle SQL - MonetDB:monetdb@127.0.0.1:gpromtest$PROVENANCE OF (SELECT sum(a) FROM r);
ERROR (metadata_lookup_monetdb.c:134) mapi error:
Connection lost
gprom(12351,0x7fff963ab380) malloc: *** error for object 0x7fc681c0002d: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
lordpretzel commented 6 years ago

likely a problem with some datastructures being messed up by the wipe