You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SQL query:
SELECT DISTINCT cast(null as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
, (SELECT COUNT(*) FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS "PROCEDURE_TYPE"
, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
AND "functions"."type" = 2;
results in an assertion failure: dev/sql/backends/monet5/rel_bin.c:2641: rel2bin_groupby: Assertion `0' failed.
Same query but without the DISTINCT keyword does not result in an assertion failure, but returns error: zero_or_one: cardinality violation (45>1)
This is not correct either. It should produce a normal table result.
Same query but without the DISTINCT keyword and without the part "cast(null as char(1)) AS "PROCEDURE_CAT", "
does execute and returns a table result.
So something strange is happening.
More test queries are presented in Steps to Reproduce section.
Reproducible: Always
Steps to Reproduce:
start mserver5 (build from default)
start mclient
run SQL queries:
SELECT cast(null as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
, (SELECT COUNT(*) FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS "PROCEDURE_TYPE"
, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
AND "functions"."type" = 2
AND "schemas"."name" = 'sys'
ORDER BY "PROCEDURE_SCHEM", "PROCEDURE_NAME", "SPECIFIC_NAME";
SELECT DISTINCT cast(null as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
, (SELECT COUNT(*) FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS "PROCEDURE_TYPE"
, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
AND "functions"."type" = 2
AND "schemas"."name" = 'sys'
ORDER BY "PROCEDURE_SCHEM", "PROCEDURE_NAME", "SPECIFIC_NAME";
Date: 2016-02-11 15:24:49 +0100
From: Martin van Dinther <<martin.van.dinther>>
To: SQL devs <>
Version: -- development
CC: @njnes
Last updated: 2016-06-23 10:24:36 +0200
Comment 21777
Date: 2016-02-11 15:24:49 +0100
From: Martin van Dinther <<martin.van.dinther>>
User-Agent: Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0
Build Identifier:
SQL query:
SELECT DISTINCT cast(null as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
, (SELECT COUNT(*) FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS "PROCEDURE_TYPE"
, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
AND "functions"."type" = 2;
results in an assertion failure: dev/sql/backends/monet5/rel_bin.c:2641: rel2bin_groupby: Assertion `0' failed.
Same query but without the DISTINCT keyword does not result in an assertion failure, but returns error: zero_or_one: cardinality violation (45>1)
This is not correct either. It should produce a normal table result.
Same query but without the DISTINCT keyword and without the part "cast(null as char(1)) AS "PROCEDURE_CAT", "
does execute and returns a table result.
So something strange is happening.
More test queries are presented in Steps to Reproduce section.
Reproducible: Always
Steps to Reproduce:
SELECT cast(null as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
, (SELECT COUNT(*) FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS "PROCEDURE_TYPE"
, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
AND "functions"."type" = 2
AND "schemas"."name" = 'sys'
ORDER BY "PROCEDURE_SCHEM", "PROCEDURE_NAME", "SPECIFIC_NAME";
SELECT DISTINCT cast(null as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
, (SELECT COUNT(*) FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS "PROCEDURE_TYPE"
, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
AND "functions"."type" = 2
AND "schemas"."name" = 'sys'
ORDER BY "PROCEDURE_SCHEM", "PROCEDURE_NAME", "SPECIFIC_NAME";
Actual Results:
bash-4.3$ mclient -p 41000
Welcome to mclient, the MonetDB/SQL interactive terminal (unreleased)
Database: MonetDB v11.22.0 (unreleased), 'demo'
Type \q to quit, ? for a list of available commands
auto commit mode: on
sql>SELECT "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
more>, CAST((SELECT COUNT() FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS smallint) AS "PROCEDURE_TYPE"
more>, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
more>FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
more>AND "functions"."type" = 2
more>AND "schemas"."name" = 'sys'
more>ORDER BY "PROCEDURE_SCHEM", "PROCEDURE_NAME", "SPECIFIC_NAME";
+-----------------+------------------+----------------+----------------------+
| PROCEDURE_SCHEM | PROCEDURE_NAME | PROCEDURE_TYPE | SPECIFIC_NAME |
+=================+==================+================+======================+
| sys | analyze | 1 | sys.analyze |
| sys | analyze | 1 | sys.analyze |
| sys | analyze | 1 | sys.analyze |
| sys | analyze | 1 | sys.analyze |
| sys | clearrejects | 0 | sys.clearrejects |
| sys | evalalgebra | 1 | sys.evalalgebra |
| sys | fitsattach | 1 | sys.fitsattach |
| sys | fitsload | 1 | sys.fitsload |
| sys | flush_log | 0 | sys.flush_log |
| sys | listdir | 1 | sys.listdir |
| sys | listdirpat | 1 | sys.listdirpat |
| sys | netcdf_attach | 1 | sys.netcdf_attach |
| sys | netcdf_importvar | 1 | sys.netcdf_importvar |
| sys | pause | 1 | sys.pause |
| sys | pause | 1 | sys.pause |
| sys | querylog | 1 | sys.querylog |
| sys | querylog_disable | 0 | sys.querylog_disable |
| sys | querylog_empty | 0 | sys.querylog_empty |
| sys | querylog_enable | 0 | sys.querylog_enable |
| sys | querylog_enable | 1 | sys.querylog_enable |
| sys | resume | 1 | sys.resume |
| sys | resume | 1 | sys.resume |
| sys | reuse | 1 | sys.reuse |
| sys | setsession | 1 | sys.setsession |
| sys | settimeout | 1 | sys.settimeout |
| sys | settimeout | 1 | sys.settimeout |
| sys | shrink | 1 | sys.shrink |
| sys | shutdown | 1 | sys.shutdown |
| sys | shutdown | 1 | sys.shutdown |
| sys | stop | 1 | sys.stop |
| sys | stop | 1 | sys.stop |
| sys | storagemodelinit | 0 | sys.storagemodelinit |
| sys | times | 0 | sys.times |
| sys | vacuum | 1 | sys.vacuum |
+-----------------+------------------+----------------+----------------------+
34 tuples (11.236ms)
sql>SELECT cast(NULL as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
more>, CAST((SELECT COUNT() FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS smallint) AS "PROCEDURE_TYPE"
more>, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
more>FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
more>AND "functions"."type" = 2
more>AND "schemas"."name" = 'sys'
more>ORDER BY "PROCEDURE_SCHEM", "PROCEDURE_NAME", "SPECIFIC_NAME";
zero_or_one: cardinality violation (34>1)
sql>SELECT cast('' as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
more>, CAST((SELECT COUNT() FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS smallint) AS "PROCEDURE_TYPE"
more>, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
more>FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
more>AND "functions"."type" = 2
more>AND "schemas"."name" = 'sys'
more>ORDER BY "PROCEDURE_SCHEM", "PROCEDURE_NAME", "SPECIFIC_NAME";
+---------------+-----------------+------------------+----------------+----------------------+
| PROCEDURE_CAT | PROCEDURE_SCHEM | PROCEDURE_NAME | PROCEDURE_TYPE | SPECIFIC_NAME |
+===============+=================+==================+================+======================+
| | sys | analyze | 1 | sys.analyze |
| | sys | analyze | 1 | sys.analyze |
| | sys | analyze | 1 | sys.analyze |
| | sys | analyze | 1 | sys.analyze |
| | sys | clearrejects | 0 | sys.clearrejects |
| | sys | evalalgebra | 1 | sys.evalalgebra |
| | sys | fitsattach | 1 | sys.fitsattach |
| | sys | fitsload | 1 | sys.fitsload |
| | sys | flush_log | 0 | sys.flush_log |
| | sys | listdir | 1 | sys.listdir |
| | sys | listdirpat | 1 | sys.listdirpat |
| | sys | netcdf_attach | 1 | sys.netcdf_attach |
| | sys | netcdf_importvar | 1 | sys.netcdf_importvar |
| | sys | pause | 1 | sys.pause |
| | sys | pause | 1 | sys.pause |
| | sys | querylog | 1 | sys.querylog |
| | sys | querylog_disable | 0 | sys.querylog_disable |
| | sys | querylog_empty | 0 | sys.querylog_empty |
| | sys | querylog_enable | 0 | sys.querylog_enable |
| | sys | querylog_enable | 1 | sys.querylog_enable |
| | sys | resume | 1 | sys.resume |
| | sys | resume | 1 | sys.resume |
| | sys | reuse | 1 | sys.reuse |
| | sys | setsession | 1 | sys.setsession |
| | sys | settimeout | 1 | sys.settimeout |
| | sys | settimeout | 1 | sys.settimeout |
| | sys | shrink | 1 | sys.shrink |
| | sys | shutdown | 1 | sys.shutdown |
| | sys | shutdown | 1 | sys.shutdown |
| | sys | stop | 1 | sys.stop |
| | sys | stop | 1 | sys.stop |
| | sys | storagemodelinit | 0 | sys.storagemodelinit |
| | sys | times | 0 | sys.times |
| | sys | vacuum | 1 | sys.vacuum |
+---------------+-----------------+------------------+----------------+----------------------+
34 tuples (10.825ms)
sql>SELECT DISTINCT cast('' as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
more>, CAST((SELECT COUNT() FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS smallint) AS "PROCEDURE_TYPE"
more>, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
more>FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
more>AND "functions"."type" = 2
more>AND "schemas"."name" = 'sys'
more>ORDER BY "PROCEDURE_SCHEM", "PROCEDURE_NAME", "SPECIFIC_NAME";
+---------------+-----------------+------------------+----------------+----------------------+
| PROCEDURE_CAT | PROCEDURE_SCHEM | PROCEDURE_NAME | PROCEDURE_TYPE | SPECIFIC_NAME |
+===============+=================+==================+================+======================+
| | sys | analyze | 1 | sys.analyze |
| | sys | clearrejects | 0 | sys.clearrejects |
| | sys | evalalgebra | 1 | sys.evalalgebra |
| | sys | fitsattach | 1 | sys.fitsattach |
| | sys | fitsload | 1 | sys.fitsload |
| | sys | flush_log | 0 | sys.flush_log |
| | sys | listdir | 1 | sys.listdir |
| | sys | listdirpat | 1 | sys.listdirpat |
| | sys | netcdf_attach | 1 | sys.netcdf_attach |
| | sys | netcdf_importvar | 1 | sys.netcdf_importvar |
| | sys | pause | 1 | sys.pause |
| | sys | querylog | 1 | sys.querylog |
| | sys | querylog_disable | 0 | sys.querylog_disable |
| | sys | querylog_empty | 0 | sys.querylog_empty |
| | sys | querylog_enable | 0 | sys.querylog_enable |
| | sys | querylog_enable | 1 | sys.querylog_enable |
| | sys | resume | 1 | sys.resume |
| | sys | reuse | 1 | sys.reuse |
| | sys | setsession | 1 | sys.setsession |
| | sys | settimeout | 1 | sys.settimeout |
| | sys | shrink | 1 | sys.shrink |
| | sys | shutdown | 1 | sys.shutdown |
| | sys | stop | 1 | sys.stop |
| | sys | storagemodelinit | 0 | sys.storagemodelinit |
| | sys | times | 0 | sys.times |
| | sys | vacuum | 1 | sys.vacuum |
+---------------+-----------------+------------------+----------------+----------------------+
26 tuples (9.874ms)
sql>SELECT DISTINCT cast(NULL as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
more>, CAST((SELECT COUNT() FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS smallint) AS "PROCEDURE_TYPE"
more>, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
more>FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
more>AND "functions"."type" = 2
more>AND "schemas"."name" = 'sys'
more>ORDER BY "PROCEDURE_SCHEM", "PROCEDURE_NAME", "SPECIFIC_NAME";
zero_or_one: cardinality violation (34>1)
sql>SELECT DISTINCT cast(NULL as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
more>, (SELECT COUNT() FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS "PROCEDURE_TYPE"
more>, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
more>FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
more>AND "functions"."type" = 2
more>AND "schemas"."name" = 'sys'
more>ORDER BY "PROCEDURE_SCHEM", "PROCEDURE_NAME", "SPECIFIC_NAME";
zero_or_one: cardinality violation (34>1)
sql>
sql>SELECT DISTINCT cast(null as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
more>, (SELECT COUNT() FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS "PROCEDURE_TYPE"
more>, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
more>FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
more>AND "functions"."type" = 2
more>AND "schemas"."name" = 'sys'
more>ORDER BY "PROCEDURE_SCHEM", "PROCEDURE_NAME", "SPECIFIC_NAME";
zero_or_one: cardinality violation (34>1)
sql>
sql>SELECT DISTINCT cast(null as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
more>, (SELECT COUNT() FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS "PROCEDURE_TYPE"
more>, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
more>FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
more>AND "functions"."type" = 2
more>ORDER BY "PROCEDURE_SCHEM", "PROCEDURE_NAME", "SPECIFIC_NAME";
zero_or_one: cardinality violation (45>1)
sql>
sql>SELECT DISTINCT cast(null as char(1)) AS "PROCEDURE_CAT", "schemas"."name" AS "PROCEDURE_SCHEM", "functions"."name" AS "PROCEDURE_NAME"
more>, (SELECT COUNT(*) FROM "sys"."args" where "args"."func_id" = "functions"."id" and "args"."number" = 0) AS "PROCEDURE_TYPE"
more>, CAST(CASE "functions"."language" WHEN 0 THEN "functions"."mod" || '.' || "functions"."func" ELSE "schemas"."name" || '.' || "functions"."name" END AS VARCHAR(1500)) AS "SPECIFIC_NAME"
more>FROM "sys"."functions", "sys"."schemas" WHERE "functions"."schema_id" = "schemas"."id"
more>AND "functions"."type" = 2;
sql>
bash-4.3$
bash-4.3$ ./start_INSTALL_mserver5.sh
builtin opt gdk_dbpath = /export/scratch2/dinther_scratch1/INSTALL/var/monetdb5/dbfarm/demo
builtin opt gdk_debug = 0
builtin opt gdk_vmtrim = no
builtin opt monet_prompt = >
builtin opt monet_daemon = no
builtin opt mapi_port = 50000
builtin opt mapi_open = false
builtin opt mapi_autosense = false
builtin opt sql_optimizer = default_pipe
builtin opt sql_debug = 0
cmdline opt embedded_r = true
cmdline opt mapi_port = 41000
cmdline opt gdk_debug = 10
MonetDB 5 server v11.22.0
This is an unreleased version
Serving database 'demo', using 8 threads
Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs and 128bit integers dynamically linked
Found 15.589 GiB available main-memory.
Copyright (c) 1993-July 2008 CWI.
Copyright (c) August 2008-2015 MonetDB B.V., all rights reserved
Visit http://www.monetdb.org/ for further information
Listening for connection requests on mapi:monetdb://127.0.0.1:41000/
MonetDB/GIS module loaded
Start processing logs sql/sql_logs version 52200
Finished processing logs sql/sql_logs
MonetDB/SQL module loaded
MonetDB/R module loaded
Expected Results:
no assertion failure.
no "zero_or_one: cardinality violation (34>1)" or "zero_or_one: cardinality violation (45>1)" errors.
Comment 21780
Date: 2016-02-11 15:55:46 +0100
From: MonetDB Mercurial Repository <>
Changeset 16b334deaca3 made by Martin van Dinther martin.van.dinther@monetdbsolutions.com in the MonetDB repo, refers to this bug.
For complete details, see http//devmonetdborg/hg/MonetDB?cmd=changeset;node=16b334deaca3
Changeset description:
Comment 21787
Date: 2016-02-13 13:34:20 +0100
From: MonetDB Mercurial Repository <>
Changeset 3f7b5a1465d3 made by Niels Nes niels@cwi.nl in the MonetDB repo, refers to this bug.
For complete details, see http//devmonetdborg/hg/MonetDB?cmd=changeset;node=3f7b5a1465d3
Changeset description:
The text was updated successfully, but these errors were encountered: