I have created a new stable branch for the next feature release. This
branch was created in order to stabilize the code before the feature
release.
From now on *only* bug fixes may go to this new stable branch. I
reserve the right to undo any changes that do not comply with this
rule. I also reserve the right to admit changes that are not strictly
bug fixes.
The name for the branch is Jan2014. So in each of your stable
checkout directories you can do
hg pull
hg update -rJan2014
to update to this new branch.
--
Sjoerd Mullender
I'm running into a problme with Ocelot, the MonetDB with OpenCL
extension.Not sure if this should go to the developers' or users' list. I
apologize if this is not the right list to post to.
I'm seeing a query failure which was caused by MoneDB-OpenCL trying to
cache an empty BAT and ended up calling clCreateBuffer with a 0 size buffer
and failed. Any select with a where clause would trigger it.
Has anyone seen this too? It fails whether I use 32 bit or 64 bit oid,
Nvidia or AMD. I'm trying to figure if it's a real issue or if I'm missing
anything. Any input greatly appreciated.
The database was generated by TPC-H dbgen (details below). The query I used
was "select c_custkey, c_name from customer where c_custkey < 2", and
here's a trace of the sequence of calls leading to the failure starting
from the MAL statement:
1) X_52 := ocelot.thetasubselect(r1_10,A0,"<",0);(see log below)
2) ocl_select.c::ocl_subselect() line 142: ocl_cacheBAT
3) ocl_memmanager.c::ocl_cacheBAT() line 771: allocateBuffer
4) ocl_memmanager.c::allocateBuffer() line 432: clCreateBuffer
===== Source version and environment =====
1) Ocelot src installed from zip downloaded from monetdb-opencl:
msaecker-monetdb-opencl-b513b35eb84a.zip
2) Ocelot configure options:
./configure --prefix=/usr/local --enable-oid32 --enable-optimize
--disable-test
ing --disable-developer --disable-debug --disable-assert --enable-sql
--enable-m
onetdb5 --with-opencl=/usr
3) Operating System: Fedora 17 kernel 3.9.10-100
4) Hardware: NVIDIA GTX570 on Intel i7-3820 w/ 16GB mem
5) OpenCL: Nvidia OpenCL that came with CUDA 5.5 SDK
6) Database: generated w/ TPC-H dbgen using size factor s=0.01
===== operation log follows =====
[root@gen3-2 ocelot]# mclient -ddb001 -lmal
mal>ocelot.init();
mal>ocelot.listDevices();
# Device 0: NVIDIA Corporation - GeForce GTX 570 (default device)
mal>\q
[root@gen3-2 ocelot]# mclient -ddb001 -lsql
sql>\d
TABLE sys.customer
TABLE sys.lineitem
TABLE sys.nation
TABLE sys.orders
TABLE sys.part
TABLE sys.partsupp
TABLE sys.region
TABLE sys.supplier
sql>\d customer
CREATE TABLE "sys"."customer" (
"c_custkey" INTEGER NOT NULL,
"c_name" VARCHAR(25) NOT NULL,
"c_address" VARCHAR(40) NOT NULL,
"c_nationkey" INTEGER NOT NULL,
"c_phone" VARCHAR(15) NOT NULL,
"c_acctbal" DECIMAL(15,2) NOT NULL,
"c_mktsegment" VARCHAR(10) NOT NULL,
"c_comment" VARCHAR(117) NOT NULL,
CONSTRAINT "customer_c_custkey_pkey" PRIMARY KEY ("c_custkey"),
CONSTRAINT "customer_c_nationkey_fkey" FOREIGN KEY ("c_nationkey")
REFERENCES "sys"."nation" ("n_nationkey")
);
sql>select count(*) from customer;
+------+
| L1 |
+======+
| 1500 |
+------+
1 tuple (1.311ms)
sql>select c_custkey, c_name from customer where c_custkey < 2;
+-----------+--------------------+
| c_custkey | c_name |
+===========+====================+
| 1 | Customer#000000001 |
+-----------+--------------------+
1 tuple (1.776ms)
sql>set optimizer='cl_pipe';
operation successful (0.981ms)
sql>select c_custkey, c_name from customer where c_custkey < 2;
invalid/unknown response from server, ignoring output
? #Could not allocate OpenCL buffer of size: 0.
Error caching input BAT.
sql>
sql>explain select c_custkey, c_name from customer where c_custkey < 2;
+------------------------------------------------------------------------------+
| mal
+==============================================================================+
| function user.s9_1{autoCommit=true}(A0:int):void; |
| ocelot.beginQuery(); |
| X_3 := sql.mvc(); |
| X_7 := sql.bind(X_3,"sys","customer","c_custkey",0); |
| X_4:bat[:oid,:oid] := sql.tid(X_3,"sys","customer"); |
| X_51 := ocelot.thetasubselect(X_7,X_4,A0,"<",0); |
| (X_10,r1_10) := sql.bind(X_3,"sys","customer","c_custkey",2); |
| X_52 := ocelot.thetasubselect(r1_10,A0,"<",0); |
| X_13 := sql.bind(X_3,"sys","customer","c_custkey",1); |
| X_53 := ocelot.thetasubselect(X_13,X_4,A0,"<",0); |
| ocelot.sync(X_51); |
| ocelot.sync(X_52); |
| ocelot.sync(X_53); |
| X_15 := sql.subdelta(X_51,X_4,X_10,X_52,X_53); |
| X_17 := sql.projectdelta(X_15,X_7,X_10,r1_10,X_13); |
| X_18 := sql.bind(X_3,"sys","customer","c_name",0); |
| (X_20,r1_23) := sql.bind(X_3,"sys","customer","c_name",2); |
| X_22 := sql.bind(X_3,"sys","customer","c_name",1); |
| X_23 := sql.projectdelta(X_15,X_18,X_20,r1_23,X_22); |
| X_24 := sql.resultSet(2,1,X_17); |
| sql.rsColumn(X_24,"sys.customer","c_custkey","int",32,0,X_17); |
| sql.rsColumn(X_24,"sys.customer","c_name","varchar",25,0,X_23); |
| X_32 := io.stdout(); |
| sql.exportResult(X_32,X_24); |
| ocelot.endQuery(); |
| end s9_1; |
| # querylog.define("explain select c_custkey, c_name from customer where
c_cu |
: stkey < 2;","cl_pipe") :
+------------------------------------------------------------------------------+
27 tuples (1.408ms)
sql>
=======================================
Hi,
I stumbled upon a build error in the latest source from the default branch
when I configure with --enable_oid32. The fix is a missing curly brace in
the HASHputall macro at gdk/gdk_search.h:110.
HI,
I"m working on writing an aggregate in in C that is a MAL function. I've
run into a problem with decimal types.
I've noticed that when I inspect the BAT inputs for various types, they are
coerced to
simpler types. (flt,dbl -> dbl). (int, decimal -> int). There is also no
other information in the BAT structure to see the type.
I notice that a SQL select gets the type info passed in as parameters for
the 'exportValue' output.
For example:
>* sql.exportValue(1,".","second_single_value","decimal",9,3,8,_4,"");
*
How can I get this type information ('decimal', etc.) passed into my
function?
Dru
hi all,
I found that in gdk module of monetdb, the file gdk_posix.c has many
functions which begin with “MT”, and I want to ask that what's "MT", is
that "MoneT", "Multiple Thread" or others? what's the meaning of "MT"? :)
--
Best Wishes!
zhanglei
Dear MonetDB users,
I have created a database link from oracle to monetdb using Monetdb ODBC driver, the link works fine but i have a strange results 😓
I have the following configurations: host1: Oracle (ubuntu 64bit)host2: MonetDB (ubntu 64bit)ODBC driver: MonetDB odbc (64bit) using unixODBC driver manager
on monetdb i have the following table: emp (id integer , name varchar);
test query: select id from emp where id<20;
when I execute this query directly on montdb I get the following results (IDs from 1 to 19)ID123..19
BUT when I execute this query from oracle using dblink
select "id" from "emp"@monetdb where "id"<20 ;
I GET THE FOLLOWING RESULTS:
ID-------- 18589934592 21.2885E+10 31.7180E+10 42.1475E+10 52.5770E+10 63.0065E+10 73.4360E+10 83.8655E+10 94.2950E+10 10
I cannot figure out the cause of the problem and how I can solve it (it seems a problem related to datatype conversion using ODBC) Could you please tell me what I should do....
Best regards,Baraa