Changeset: 9ad676c6b0b4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9ad676c6b0b4
Added Files:
sql/backends/monet5/bam/Tests/bam_lib.reqtests
sql/backends/monet5/bam/Tests/bam_lib.sql
sql/backends/monet5/bam/Tests/bam_lib.stable.err
sql/backends/monet5/bam/Tests/bam_lib.stable.out
sql/backends/monet5/bam/Tests/bam_lib_mal.mal
sql/backends/monet5/bam/Tests/bam_lib_mal.stable.err
sql/backends/monet5/bam/Tests/bam_lib_mal.stable.out
sql/backends/monet5/bam/Tests/coverage_usecase.reqtests
sql/backends/monet5/bam/Tests/coverage_usecase.sql
sql/backends/monet5/bam/Tests/mergetable.reqtests
sql/backends/monet5/bam/Tests/mergetable.sql
Removed Files:
sql/backends/monet5/bam/Tests/mergetable.SQL.py
sql/backends/monet5/bam/Tests/sql/drop_last_files.sql
sql/backends/monet5/bam/Tests/sql/mergetable.sql
Modified Files:
clients/Tests/MAL-signatures.malC
clients/Tests/SQL-dump.sql
clients/Tests/SQL-dump.stable.out
gdk/gdk_batop.c
monetdb5/modules/mal/Tests/remote07.malC
monetdb5/modules/mal/mat.c
sql/backends/monet5/bam/85_bam.sql
sql/backends/monet5/bam/Tests/All
sql/backends/monet5/bam/Tests/bam_loader_files.SQL.py
sql/backends/monet5/bam/Tests/bam_loader_files.stable.err
sql/backends/monet5/bam/Tests/bam_loader_files.stable.out
sql/backends/monet5/bam/Tests/check_files.sql
sql/backends/monet5/bam/Tests/check_files.stable.out
sql/backends/monet5/bam/Tests/drop_last_files.SQL.py
sql/backends/monet5/bam/Tests/sql/bam_loader_files.sql
sql/backends/monet5/bam/Tests/sql/bam_loader_repos.sql
sql/backends/monet5/bam/Tests/sql/sam_export.sql
sql/backends/monet5/bam/bam.mal
sql/backends/monet5/bam/bam_lib.c
sql/backends/monet5/bam/bam_loader.c
sql/backends/monet5/bam/bam_wrapper.c
sql/backends/monet5/bam/bam_wrapper.h
sql/benchmarks/tpch/c.sql-primary
sql/benchmarks/tpch/c.sql-primary-foreign
sql/jdbc/tests/Tests/Test_Dobjects.stable.out
sql/scripts/41_md5sum.sql
sql/test/BugTracker-2012/Tests/currenttime.Bug-2781.SQL.py
sql/test/Tests/systemfunctions.stable.out
sql/test/leaks/Tests/check0.stable.out
sql/test/leaks/Tests/check1.stable.out
sql/test/leaks/Tests/check2.stable.out
sql/test/leaks/Tests/check3.stable.out
sql/test/leaks/Tests/check4.stable.out
sql/test/leaks/Tests/check5.stable.out
sql/test/leaks/Tests/drop3.stable.out
sql/test/leaks/Tests/select1.stable.out
sql/test/leaks/Tests/select2.stable.out
sql/test/leaks/Tests/temp1.stable.out
sql/test/leaks/Tests/temp2.stable.out
sql/test/leaks/Tests/temp3.stable.out
sql/test/mergetables/Tests/forex.stable.err
sql/test/mergetables/Tests/forex.stable.out
Branch: DataVaults
Log Message:
Merge with bamloader branch
diffs (truncated from 5317 to 300 lines):
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -103,7 +103,7 @@ insert_string_bat(BAT *b, BAT *n, int ap
/* If b is in the transient farm (i.e. b will
* never become persistent), we try some
* clever tricks to avoid copying:
- * - if b is empty, we just let is share the
+ * - if b is empty, we just let it share the
* string heap with n;
* - otherwise, if b's string heap and n's
* string heap are the same (i.e. shared),
diff --git a/monetdb5/modules/mal/mat.c b/monetdb5/modules/mal/mat.c
--- a/monetdb5/modules/mal/mat.c
+++ b/monetdb5/modules/mal/mat.c
@@ -148,8 +148,9 @@ MATpackIncrement(Client cntxt, MalBlkPtr
bn = BATnew(TYPE_void, b->ttype?b->ttype:TYPE_oid, (BUN)(1.2 *
BATcount(b) * pieces), TRANSIENT);
if (bn == NULL)
throw(MAL, "mat.pack", MAL_MALLOC_FAIL);
- /* allocate enough space for the strings */
- if ( b->T->vheap && bn->T->vheap ){
+ /* allocate enough space for the vheap, but not for strings,
+ * since BATappend does clever things for strings */
+ if ( b->T->vheap && bn->T->vheap && ATOMstorage(b->ttype) !=
TYPE_str){
newsize = b->T->vheap->size * pieces;
if (HEAPextend(bn->T->vheap, newsize, TRUE) !=
GDK_SUCCEED)
throw(MAL, "mat.pack", MAL_MALLOC_FAIL);
diff --git a/sql/backends/monet5/bam/85_bam.sql
b/sql/backends/monet5/bam/85_bam.sql
--- a/sql/backends/monet5/bam/85_bam.sql
+++ b/sql/backends/monet5/bam/85_bam.sql
@@ -1,9 +1,9 @@
CREATE SCHEMA bam;
-CREATE PROCEDURE bam.bam_loader_repos(bam_repos STRING, dbschema SMALLINT,
nr_threads SMALLINT)
+CREATE PROCEDURE bam.bam_loader_repos(bam_repos STRING, dbschema SMALLINT)
EXTERNAL NAME bam.bam_loader_repos;
-CREATE PROCEDURE bam.bam_loader_files(bam_files STRING, dbschema SMALLINT,
nr_threads SMALLINT)
+CREATE PROCEDURE bam.bam_loader_files(bam_files STRING, dbschema SMALLINT)
EXTERNAL NAME bam.bam_loader_files;
CREATE PROCEDURE bam.bam_loader_file(bam_file STRING, dbschema SMALLINT)
@@ -25,6 +25,9 @@ RETURNS STRING EXTERNAL NAME bam.reverse
CREATE FUNCTION bam.seq_length(cigar STRING)
RETURNS INT EXTERNAL NAME bam.seq_length;
+CREATE FUNCTION bam.seq_char(ref_pos INT, alg_seq STRING, alg_pos INT,
alg_cigar STRING)
+RETURNS CHAR(1) EXTERNAL NAME bam.seq_char;
+
CREATE PROCEDURE bam.sam_export(output_path STRING)
EXTERNAL NAME bam.sam_export;
diff --git a/sql/backends/monet5/bam/Tests/All
b/sql/backends/monet5/bam/Tests/All
--- a/sql/backends/monet5/bam/Tests/All
+++ b/sql/backends/monet5/bam/Tests/All
@@ -25,3 +25,6 @@ HAVE_SAMTOOLS?query2.10
HAVE_SAMTOOLS?query2.11
HAVE_SAMTOOLS?query2.12
HAVE_SAMTOOLS?mergetable
+HAVE_SAMTOOLS?bam_lib_mal
+HAVE_SAMTOOLS?bam_lib
+#HAVE_SAMTOOLS?coverage_usecase
diff --git a/sql/backends/monet5/bam/Tests/bam_lib.reqtests
b/sql/backends/monet5/bam/Tests/bam_lib.reqtests
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/bam/Tests/bam_lib.reqtests
@@ -0,0 +1,1 @@
+bam_loader_file
diff --git a/sql/backends/monet5/bam/Tests/bam_lib.sql
b/sql/backends/monet5/bam/Tests/bam_lib.sql
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/bam/Tests/bam_lib.sql
@@ -0,0 +1,133 @@
+SET SCHEMA bam;
+
+# BAM_FLAG
+
+# Should all give 'true'
+SELECT bam_flag(1, 'mult_segm');
+SELECT bam_flag(2, 'prop_alig');
+SELECT bam_flag(4, 'segm_unma');
+SELECT bam_flag(8, 'next_unma');
+SELECT bam_flag(16, 'segm_reve');
+SELECT bam_flag(32, 'next_reve');
+SELECT bam_flag(64, 'firs_segm');
+SELECT bam_flag(128, 'last_segm');
+SELECT bam_flag(256, 'seco_alig');
+SELECT bam_flag(512, 'qual_cont');
+SELECT bam_flag(1024, 'opti_dupl');
+SELECT bam_flag(2048, 'supp_alig');
+
+# Should all give 'false'
+SELECT bam_flag(2, 'mult_segm');
+SELECT bam_flag(4, 'prop_alig');
+SELECT bam_flag(8, 'segm_unma');
+SELECT bam_flag(16, 'next_unma');
+SELECT bam_flag(4, 'segm_reve');
+SELECT bam_flag(2, 'next_reve');
+SELECT bam_flag(4, 'firs_segm');
+SELECT bam_flag(8, 'last_segm');
+SELECT bam_flag(16, 'seco_alig');
+SELECT bam_flag(32, 'qual_cont');
+SELECT bam_flag(64, 'opti_dupl');
+SELECT bam_flag(128, 'supp_alig');
+
+# Should all give 'true'
+SELECT bam_flag(2047, 'mult_segm');
+SELECT bam_flag(2047, 'prop_alig');
+SELECT bam_flag(2047, 'segm_unma');
+SELECT bam_flag(2047, 'next_unma');
+SELECT bam_flag(2047, 'segm_reve');
+SELECT bam_flag(2047, 'next_reve');
+SELECT bam_flag(2047, 'firs_segm');
+SELECT bam_flag(2047, 'last_segm');
+SELECT bam_flag(2047, 'seco_alig');
+SELECT bam_flag(2047, 'qual_cont');
+SELECT bam_flag(2047, 'opti_dupl');
+SELECT bam_flag(4095, 'supp_alig');
+
+# Should fail
+SELECT bam_flag(111, 'Fail-hard');
+
+# Bulk
+SELECT flag,
+ bam_flag(flag, 'mult_segm') AS mult_segm,
+ bam_flag(flag, 'prop_alig') AS prop_alig,
+ bam_flag(flag, 'segm_unma') AS segm_unma,
+ bam_flag(flag, 'next_unma') AS next_unma,
+ bam_flag(flag, 'segm_reve') AS segm_reve,
+ bam_flag(flag, 'next_reve') AS next_reve,
+ bam_flag(flag, 'firs_segm') AS firs_segm,
+ bam_flag(flag, 'last_segm') AS last_segm,
+ bam_flag(flag, 'seco_alig') AS seco_alig,
+ bam_flag(flag, 'qual_cont') AS qual_cont,
+ bam_flag(flag, 'opti_dupl') AS opti_dupl,
+ bam_flag(flag, 'supp_alig') AS supp_alig
+FROM bam.alignments_1;
+
+
+
+
+# REVERSE_SEQ
+SELECT reverse_seq('A');
+SELECT reverse_seq('T');
+SELECT reverse_seq('C');
+SELECT reverse_seq('G');
+SELECT reverse_seq('R');
+SELECT reverse_seq('Y');
+SELECT reverse_seq('S');
+SELECT reverse_seq('W');
+SELECT reverse_seq('K');
+SELECT reverse_seq('M');
+SELECT reverse_seq('H');
+SELECT reverse_seq('D');
+SELECT reverse_seq('V');
+SELECT reverse_seq('B');
+SELECT reverse_seq('N');
+SELECT reverse_seq('ATCGRYSWKMHDVBN');
+SELECT reverse_seq('invalidchars');
+
+# Bulk
+SELECT seq, reverse_seq(seq) AS reverse_seq
+FROM bam.alignments_1;
+
+
+# REVERSE_QUAL
+SELECT reverse_qual('Should be reversed');
+
+# Bulk
+SELECT qual, reverse_qual(qual) AS reverse_qual
+FROM bam.alignments_1;
+
+
+
+
+# SEQ_LENGTH
+SELECT seq_length('18M');
+SELECT seq_length('3I5D6N');
+SELECT seq_length('3=1X1=1X43=1X16=1X33=');
+
+# Bulk
+SELECT cigar, seq_length(cigar) AS seq_length
+FROM bam.alignments_1;
+
+
+
+# SEQ_CHAR
+
+# Some simple cases
+SELECT seq_char(5000, 'ACTGAG', 0, '6M');
+SELECT seq_char(5000, 'ACTGAG', 4995, '6M');
+SELECT seq_char(5000, 'ACTGAG', 4994, '6M');
+SELECT seq_char(5000, 'ACTGAG', 5000, '6M');
+SELECT seq_char(5000, 'ACTGAG', 5001, '6M');
+
+# Cases inspired by http://genome.sph.umich.edu/wiki/SAM#What_is_a_CIGAR.3F
+SELECT seq_char(7, 'ACTAGAATGGCT', 5, '3M1I3M1D5M');
+SELECT seq_char(8, 'ACTAGAATGGCT', 5, '3M1I3M1D5M');
+SELECT seq_char(11, 'ACTAGAATGGCT', 5, '3M1I3M1D5M');
+SELECT seq_char(16, 'ACTAGAATGGCT', 5, '3M1I3M1D5M');
+SELECT seq_char(17, 'ACTAGAATGGCT', 5, '3M1I3M1D5M');
+
+# Bulk
+SELECT 17922987 AS ref_pos, seq, pos, cigar, seq_char(17922987, seq, pos,
cigar) AS seq_char
+FROM bam.alignments_1
+WHERE seq_char(17922987, seq, pos, cigar) IS NOT NULL;
diff --git a/sql/backends/monet5/bam/Tests/bam_lib.stable.err
b/sql/backends/monet5/bam/Tests/bam_lib.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/bam/Tests/bam_lib.stable.err
@@ -0,0 +1,39 @@
+stderr of test 'bam_lib` in directory 'sql/backends/monet5/bam` itself:
+
+
+# 14:48:31 >
+# 14:48:31 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=35990" "--set"
"mapi_usock=/var/tmp/mtest-20228/.s.monetdb.35990" "--set" "monet_prompt="
"--forcemito" "--set" "mal_listing=2"
"--dbpath=/home/robin/MonetDB/PREFIX/var/MonetDB/mTests_sql_backends_monet5_bam"
"--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 14:48:31 >
+
+# builtin opt gdk_dbpath = /home/robin/MonetDB/PREFIX/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 gdk_nr_threads = 0
+# cmdline opt mapi_open = true
+# cmdline opt mapi_port = 35990
+# cmdline opt mapi_usock = /var/tmp/mtest-20228/.s.monetdb.35990
+# cmdline opt monet_prompt =
+# cmdline opt mal_listing = 2
+# cmdline opt gdk_dbpath =
/home/robin/MonetDB/PREFIX/var/MonetDB/mTests_sql_backends_monet5_bam
+# cmdline opt mal_listing = 0
+# cmdline opt embedded_r = yes
+# cmdline opt gdk_debug = 536870922
+
+# 14:48:31 >
+# 14:48:31 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-20228" "--port=35990"
+# 14:48:31 >
+
+MAPI = (monetdb) /var/tmp/mtest-20228/.s.monetdb.35990
+QUERY = SELECT bam_flag(111, 'Fail-hard');
+ERROR = !Unknown flag name given: Fail-hard
+
+# 14:48:32 >
+# 14:48:32 > "Done."
+# 14:48:32 >
diff --git a/sql/backends/monet5/bam/Tests/bam_lib.stable.out
b/sql/backends/monet5/bam/Tests/bam_lib.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/backends/monet5/bam/Tests/bam_lib.stable.out
@@ -0,0 +1,760 @@
+stdout of test 'bam_lib` in directory 'sql/backends/monet5/bam` itself:
+
+
+# 14:48:31 >
+# 14:48:31 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=35990" "--set"
"mapi_usock=/var/tmp/mtest-20228/.s.monetdb.35990" "--set" "monet_prompt="
"--forcemito" "--set" "mal_listing=2"
"--dbpath=/home/robin/MonetDB/PREFIX/var/MonetDB/mTests_sql_backends_monet5_bam"
"--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 14:48:31 >
+
+# MonetDB 5 server v11.20.0
+# This is an unreleased version
+# Serving database 'mTests_sql_backends_monet5_bam', using 4 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs and 128bit
integers dynamically linked
+# Found 7.333 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2014 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://robin-xps13:35990/
+# Listening for UNIX domain connection requests on
mapi:monetdb:///var/tmp/mtest-20228/.s.monetdb.35990
+# MonetDB/SQL module loaded
+# MonetDB/R module loaded
+
+Ready.
+
+# 14:48:31 >
+# 14:48:31 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-20228" "--port=35990"
+# 14:48:31 >
+
+#SET SCHEMA bam;
+#SELECT bam_flag(1, 'mult_segm');
+% .L # table_name
+% bam_flag_single_value # name
+% boolean # type
+% 5 # length
+[ true ]
+#SELECT bam_flag(2, 'prop_alig');
+% .L # table_name
+% bam_flag_single_value # name
+% boolean # type
+% 5 # length
+[ true ]
+#SELECT bam_flag(4, 'segm_unma');
+% .L # table_name
+% bam_flag_single_value # name
+% boolean # type
+% 5 # length
+[ true ]
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list