Changeset: 0d1b80849a52 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0d1b80849a52
Added Files:
        debian/libmonetdb5-server-bam.install
        sql/backends/monet5/bam/85_bam.mal
        sql/backends/monet5/bam/85_bam.sql
        sql/backends/monet5/bam/BAMRecipe.pdf
        sql/backends/monet5/bam/Makefile.ag
        sql/backends/monet5/bam/Tests/All
        sql/backends/monet5/bam/Tests/bam.py
        sql/backends/monet5/bam/Tests/bam_export.SQL.py
        sql/backends/monet5/bam/Tests/bam_loader_file.SQL.py
        sql/backends/monet5/bam/Tests/bam_loader_file.stable.err
        sql/backends/monet5/bam/Tests/bam_loader_file.stable.out
        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/bam_loader_repos.SQL.py
        sql/backends/monet5/bam/Tests/bam_loader_repos.stable.err
        sql/backends/monet5/bam/Tests/bam_loader_repos.stable.out
        sql/backends/monet5/bam/Tests/check_files.sql
        sql/backends/monet5/bam/Tests/check_files.stable.err
        sql/backends/monet5/bam/Tests/check_files.stable.out
        sql/backends/monet5/bam/Tests/check_files_exact.sql
        sql/backends/monet5/bam/Tests/check_files_exact.stable.err
        sql/backends/monet5/bam/Tests/check_files_exact.stable.out
        sql/backends/monet5/bam/Tests/drop_last_files.SQL.py
        sql/backends/monet5/bam/Tests/drop_last_files.stable.err
        sql/backends/monet5/bam/Tests/drop_last_files.stable.out
        sql/backends/monet5/bam/Tests/files/file1.bam
        sql/backends/monet5/bam/Tests/files/file2.sam
        sql/backends/monet5/bam/Tests/files/queryname/file1.bam
        sql/backends/monet5/bam/Tests/files/queryname/file2.sam
        sql/backends/monet5/bam/Tests/query1.1.sql
        sql/backends/monet5/bam/Tests/query1.1.stable.err
        sql/backends/monet5/bam/Tests/query1.1.stable.out
        sql/backends/monet5/bam/Tests/query1.2.sql
        sql/backends/monet5/bam/Tests/query1.2.stable.err
        sql/backends/monet5/bam/Tests/query1.2.stable.out
        sql/backends/monet5/bam/Tests/query1.3.sql
        sql/backends/monet5/bam/Tests/query1.3.stable.err
        sql/backends/monet5/bam/Tests/query1.3.stable.out
        sql/backends/monet5/bam/Tests/query1.4.sql
        sql/backends/monet5/bam/Tests/query1.4.stable.err
        sql/backends/monet5/bam/Tests/query1.4.stable.out
        sql/backends/monet5/bam/Tests/query1.5.sql
        sql/backends/monet5/bam/Tests/query1.5.stable.err
        sql/backends/monet5/bam/Tests/query1.5.stable.out
        sql/backends/monet5/bam/Tests/query1.6.sql
        sql/backends/monet5/bam/Tests/query2.1.sql
        sql/backends/monet5/bam/Tests/query2.1.stable.err
        sql/backends/monet5/bam/Tests/query2.1.stable.out
        sql/backends/monet5/bam/Tests/query2.10.sql
        sql/backends/monet5/bam/Tests/query2.10.stable.err
        sql/backends/monet5/bam/Tests/query2.10.stable.out
        sql/backends/monet5/bam/Tests/query2.11.sql
        sql/backends/monet5/bam/Tests/query2.11.stable.err
        sql/backends/monet5/bam/Tests/query2.11.stable.out
        sql/backends/monet5/bam/Tests/query2.12.sql
        sql/backends/monet5/bam/Tests/query2.12.stable.err
        sql/backends/monet5/bam/Tests/query2.12.stable.out
        sql/backends/monet5/bam/Tests/query2.2.sql
        sql/backends/monet5/bam/Tests/query2.2.stable.err
        sql/backends/monet5/bam/Tests/query2.2.stable.out
        sql/backends/monet5/bam/Tests/query2.3.sql
        sql/backends/monet5/bam/Tests/query2.3.stable.err
        sql/backends/monet5/bam/Tests/query2.3.stable.out
        sql/backends/monet5/bam/Tests/query2.4.sql
        sql/backends/monet5/bam/Tests/query2.4.stable.err
        sql/backends/monet5/bam/Tests/query2.4.stable.out
        sql/backends/monet5/bam/Tests/query2.5.sql
        sql/backends/monet5/bam/Tests/query2.5.stable.err
        sql/backends/monet5/bam/Tests/query2.5.stable.out
        sql/backends/monet5/bam/Tests/query2.6.sql
        sql/backends/monet5/bam/Tests/query2.6.stable.err
        sql/backends/monet5/bam/Tests/query2.6.stable.out
        sql/backends/monet5/bam/Tests/query2.7.sql
        sql/backends/monet5/bam/Tests/query2.7.stable.err
        sql/backends/monet5/bam/Tests/query2.7.stable.out
        sql/backends/monet5/bam/Tests/query2.8.sql
        sql/backends/monet5/bam/Tests/query2.8.stable.err
        sql/backends/monet5/bam/Tests/query2.8.stable.out
        sql/backends/monet5/bam/Tests/query2.9.sql
        sql/backends/monet5/bam/Tests/query2.9.stable.err
        sql/backends/monet5/bam/Tests/query2.9.stable.out
        sql/backends/monet5/bam/Tests/sam_export.SQL.py
        sql/backends/monet5/bam/Tests/sam_export.stable.err
        sql/backends/monet5/bam/Tests/sam_export.stable.out
        sql/backends/monet5/bam/Tests/sql/bam_export.sql
        sql/backends/monet5/bam/Tests/sql/bam_loader_file.sql
        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/drop_last_files.sql
        sql/backends/monet5/bam/Tests/sql/sam_export.sql
        sql/backends/monet5/bam/Tests/verify_load.sql
        sql/backends/monet5/bam/Tests/verify_load.stable.err
        sql/backends/monet5/bam/Tests/verify_load.stable.out
        sql/backends/monet5/bam/bam.mal
        sql/backends/monet5/bam/bam_db_interface.c
        sql/backends/monet5/bam/bam_db_interface.h
        sql/backends/monet5/bam/bam_export.c
        sql/backends/monet5/bam/bam_export.h
        sql/backends/monet5/bam/bam_globals.c
        sql/backends/monet5/bam/bam_globals.h
        sql/backends/monet5/bam/bam_lib.c
        sql/backends/monet5/bam/bam_lib.h
        sql/backends/monet5/bam/bam_loader.c
        sql/backends/monet5/bam/bam_loader.h
        sql/backends/monet5/bam/bam_wrapper.c
        sql/backends/monet5/bam/bam_wrapper.h
        sql/backends/monet5/bam/mykstring.h
        sql/jdbc/tests/Tests/Test_Dobjects_bam.SQL.sh
        sql/jdbc/tests/Tests/Test_Dobjects_bam.stable.err
        sql/jdbc/tests/Tests/Test_Dobjects_bam.stable.out
        
sql/test/BugTracker-2012/Tests/table_functions_fail_after_restart-0.Bug-3063_bam.sql.src
        
sql/test/BugTracker-2012/Tests/table_functions_fail_after_restart-0.Bug-3063_bam.stable.err
        
sql/test/BugTracker-2012/Tests/table_functions_fail_after_restart-0.Bug-3063_bam.stable.out
        
sql/test/BugTracker-2012/Tests/table_functions_fail_after_restart-1.Bug-3063_bam.sql.src
        
sql/test/BugTracker-2012/Tests/table_functions_fail_after_restart-1.Bug-3063_bam.stable.err
        
sql/test/BugTracker-2012/Tests/table_functions_fail_after_restart-1.Bug-3063_bam.stable.out
        sql/test/BugTracker-2014/Tests/union_with_subqueries.Bug-3518.sql
        sql/test/BugTracker-2014/Tests/union_with_subqueries.Bug-3518.stable.err
        sql/test/BugTracker-2014/Tests/union_with_subqueries.Bug-3518.stable.out
        sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.sql
        
sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.err
        
sql/test/BugTracker-2014/Tests/varchar_conversion_crash.Bug-3506.stable.out
        sql/test/Dependencies/Tests/Dependencies_bam.SQL.py.src
        sql/test/Dependencies/Tests/Dependencies_bam.stable.err
        sql/test/Dependencies/Tests/Dependencies_bam.stable.out
        sql/test/Tests/keys_bam.sql.src
        sql/test/Tests/keys_bam.stable.err
        sql/test/Tests/keys_bam.stable.out
Modified Files:
        MonetDB.spec
        NT/monetdb_config.h.in
        NT/rules.msc
        buildtools/autogen/autogen/am.py
        buildtools/conf/Maddlog
        buildtools/conf/Makefile.ag
        buildtools/conf/banner.bmp
        buildtools/conf/fixlicense.py
        buildtools/conf/license.rtf
        buildtools/conf/monetdb.ico
        buildtools/conf/rules.mk
        buildtools/conf/website.html
        clients/R/MonetDB.R/R/monetdb.R
        clients/Tests/All
        clients/examples/php/sqlsample.php
        clients/mapiclient/mclient.c
        configure.ag
        debian/control
        debian/monetdb5-server.install
        debian/rules
        monetdb5/modules/mal/Tests/tokenizer00.mal
        monetdb5/modules/mal/Tests/tokenizer00.stable.err
        monetdb5/modules/mal/Tests/tokenizer00.stable.out
        monetdb5/modules/mal/tokenizer.c
        monetdb5/modules/mal/tokenizer.h
        monetdb5/modules/mal/tokenizer.mal
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_support.c
        sql/backends/monet5/Makefile.ag
        sql/backends/monet5/rel_bin.c
        sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out
        sql/benchmarks/tpch/LOCKED/Tests/18.stable.out
        sql/benchmarks/tpch/Tests/01-22.stable.out
        sql/benchmarks/tpch/Tests/16-explain.stable.out
        sql/benchmarks/tpch/Tests/16-plan.stable.out
        sql/benchmarks/tpch/Tests/18-explain.stable.out
        sql/benchmarks/tpch/Tests/18-plan.stable.out
        sql/benchmarks/tpch/Tests/18.stable.out
        sql/benchmarks/tpch/Tests/20-explain.stable.out
        sql/benchmarks/tpch/Tests/20-plan.stable.out
        sql/jdbc/tests/Tests/All
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/test/BugConstraints/Tests/All
        sql/test/BugConstraints/add_constraint_1643522.sql
        sql/test/BugDay_2005-10-06_2.8/Tests/All
        sql/test/BugDay_2005-11-09_2.8/Tests/All
        sql/test/BugTracker-2008/Tests/All
        sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.sql
        
sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.stable.err
        
sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.stable.out
        sql/test/BugTracker-2009/Tests/All
        sql/test/BugTracker-2010/Tests/All
        sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.sql
        sql/test/BugTracker-2010/Tests/limit_in_prepare.Bug-2552.stable.out
        sql/test/BugTracker-2011/Tests/All
        sql/test/BugTracker-2011/Tests/count-count-distinct.Bug-2808.sql
        sql/test/BugTracker-2011/Tests/count-count-distinct.Bug-2808.stable.out
        sql/test/BugTracker-2011/Tests/exists-select.Bug-2933.sql
        sql/test/BugTracker-2011/Tests/exists-select.Bug-2933.stable.out
        sql/test/BugTracker-2012/Tests/All
        
sql/test/BugTracker-2012/Tests/aggregate_vs_positional_column_crash.Bug-3085.sql
        
sql/test/BugTracker-2012/Tests/aggregate_vs_positional_column_crash.Bug-3085.stable.out
        sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.sql
        sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err
        sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out
        sql/test/BugTracker-2013/Tests/All
        sql/test/BugTracker-2013/Tests/qualified_aggrname.Bug-3332.sql
        sql/test/BugTracker-2013/Tests/qualified_aggrname.Bug-3332.stable.out
        sql/test/BugTracker-2014/Tests/All
        sql/test/BugTracker-2014/Tests/select-having.Bug-3458.sql
        sql/test/BugTracker-2014/Tests/select-having.Bug-3458.stable.out
        sql/test/BugTracker/Tests/All
        sql/test/Dependencies/Tests/All
        sql/test/DropCascade/Tests/All
        sql/test/DropCascade/Tests/drop_columns_cascade.sql
        sql/test/DropCascade/Tests/drop_pkey_cascade.sql
        sql/test/Dump/Tests/All
        sql/test/Tests/All
        sql/test/UserDump/Tests/All
        sql/test/bugs/Tests/All
        sql/test/bugs/Tests/crash_order_by.sql
        sql/test/bugs/Tests/crash_order_by.stable.err
        sql/test/bugs/Tests/crash_order_by.stable.out
        sql/test/bugs/Tests/insert_delete-bug-sf-904025.stable.out
        sql/test/bugs/Tests/simple_view.sql
        sql/test/bugs/Tests/simple_view.stable.out
        sql/test/bugs/insert_delete-bug-sf-904025.sql
        sql/test/leaks/Tests/All
        sql/test/mapi/Tests/All
        sql/test/mapi/Tests/php_monetdb.stable.out
        sql/test/testdb/Tests/All
        sql/test/testdb/Tests/testdb-load.stable.err
        sql/test/testdb/Tests/testdb-load.stable.out
        testing/Mtest.py.in
Branch: RIntegration-default
Log Message:

Merge with default branch.


diffs (truncated from 22018 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -36,6 +36,10 @@
 %define with_geos 1
 %endif
 
+%if %{?_with_samtools:1}%{!?_with_samtools:0}
+%define with_samtools 1
+%endif
+
 Name: %{name}
 Version: %{version}
 Release: %{release}
@@ -78,6 +82,9 @@ BuildRequires: rubygems-devel
 %endif
 BuildRequires: unixODBC-devel
 BuildRequires: zlib-devel
+%if %{?with_samtools:1}%{!?with_samtools:0}
+BuildRequires: samtools-devel
+%endif
 
 # need to define python_sitelib on RHEL 5 and older
 # no need to define python3_sitelib: it's defined by python3-devel
@@ -449,6 +456,29 @@ numerical analysis (gsl).
 %{_libdir}/monetdb5/gsl.mal
 %{_libdir}/monetdb5/lib_gsl.so
 
+%if %{?_with_samtools:1}%{!?_with_samtools:0}
+%package bam-MonetDB5
+Summary: MonetDB5 SQL interface to the bam library
+Group: Applications/Databases
+Requires: MonetDB5-server = %{version}-%{release}
+
+%description bam-MonetDB5
+MonetDB is a database management system that is developed from a
+main-memory perspective with use of a fully decomposed storage model,
+automatic index management, extensibility of data types and search
+accelerators.  It also has an SQL frontend.
+
+This package contains the interface to load and query BAM (binary
+version of Sequence Alignment/Map) data.
+
+%files bam-MonetDB5
+%defattr(-,root,root)
+%{_libdir}/monetdb5/autoload/*_bam.mal
+%{_libdir}/monetdb5/createdb/*_bam.sql
+%{_libdir}/monetdb5/bam.mal
+%{_libdir}/monetdb5/lib_bam.so
+%endif
+
 %package -n MonetDB5-server
 Summary: MonetDB - Monet Database Management System
 Group: Applications/Databases
@@ -512,6 +542,11 @@ fi
 %exclude %{_libdir}/monetdb5/lib_geom.so
 %endif
 %exclude %{_libdir}/monetdb5/lib_gsl.so
+%if %{?_with_samtools:1}%{!?_with_samtools:0}
+%exclude %{_libdir}/monetdb5/bam.mal
+%exclude %{_libdir}/monetdb5/autoload/*_bam.mal
+%exclude %{_libdir}/monetdb5/lib_bam.so
+%endif
 # %exclude %{_libdir}/monetdb5/lib_rdf.so
 %exclude %{_libdir}/monetdb5/lib_sql.so
 %{_libdir}/monetdb5/*.so
@@ -605,6 +640,9 @@ systemd-tmpfiles --create %{_sysconfdir}
 %exclude %{_libdir}/monetdb5/createdb/*_geom.sql
 %endif
 %exclude %{_libdir}/monetdb5/createdb/*_gsl.sql
+%if %{?_with_samtools:1}%{!?_with_samtools:0}
+%exclude %{_libdir}/monetdb5/createdb/*_bam.sql
+%endif
 # %exclude %{_libdir}/monetdb5/createdb/*_rdf.sql
 %{_libdir}/monetdb5/createdb/*
 %{_libdir}/monetdb5/sql*.mal
@@ -762,6 +800,7 @@ developer, but if you do want to test, t
        --with-readline=yes \
        --with-rubygem=%{?rhel:no}%{!?rhel:yes} \
        --with-rubygem-dir=%{?rhel:no}%{!?rhel:"%{gem_dir}"} \
+       --with-samtools=%{?with_samtools:yes}%{!?with_samtools:no} \
        --with-sphinxclient=no \
        --with-unixodbc=yes \
        --with-valgrind=no \
diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in
--- a/NT/monetdb_config.h.in
+++ b/NT/monetdb_config.h.in
@@ -458,6 +458,12 @@
 /* Define to 1 if you have the `round' function. */
 /* #undef HAVE_ROUND */
 
+/* Define if you have the samtools (providing the bam library) */
+/* #undef HAVE_SAMTOOLS */
+
+/* Define to 1 if you have the <samtools/kstring.h> header file. */
+/* #undef HAVE_SAMTOOLS_KSTRING_H */
+
 /* Define to 1 if you have the `sbrk' function. */
 /* #undef HAVE_SBRK */
 
diff --git a/NT/rules.msc b/NT/rules.msc
--- a/NT/rules.msc
+++ b/NT/rules.msc
@@ -416,6 +416,11 @@ create_winconfig_conds_new_py:
 !ELSE
        $(ECHO) HAVE_RUBYGEM_FALSE='' >> "$(TOPDIR)\winconfig_conds_new.py"
 !ENDIF
+!IFDEF HAVE_SAMTOOLS
+       $(ECHO) HAVE_SAMTOOLS_FALSE='#' >> "$(TOPDIR)\winconfig_conds_new.py"
+!ELSE
+       $(ECHO) HAVE_SAMTOOLS_FALSE='' >> "$(TOPDIR)\winconfig_conds_new.py"
+!ENDIF
 !IFDEF HAVE_SPHINXCLIENT
        $(ECHO) HAVE_SPHINXCLIENT_FALSE='#' >> 
"$(TOPDIR)\winconfig_conds_new.py"
 !ELSE
diff --git a/buildtools/autogen/autogen/am.py b/buildtools/autogen/autogen/am.py
--- a/buildtools/autogen/autogen/am.py
+++ b/buildtools/autogen/autogen/am.py
@@ -1046,7 +1046,7 @@ def am_ant(fd, var, ant, am):
     if "COND" in ant:
         fd.write("\nif " + ant["COND"][0] +"\n\n")
 
-    fd.write("\n%s_ant_target:\n\t\"$(ANT)\" -f \"`$(anttranslatepath) 
$(srcdir)/build.xml`\" -Dbuilddir=\"`$(anttranslatepath) $(PWD)/%s`\" 
-Djardir=\"`$(anttranslatepath) $(PWD)`\" -Dbasedir=\"`$(anttranslatepath) 
$(srcdir)`\" %s\n" % (target, target, target))
+    fd.write("\n%s_ant_target:\n\t\"$(ANT)\" -f \"`$(anttranslatepath) 
$(srcdir)/build.xml`\" -Dbuilddir=\"`$(anttranslatepath) $(PWD)`/%s\" 
-Djardir=\"`$(anttranslatepath) $(PWD)`\" -Dbasedir=\"`$(anttranslatepath) 
$(srcdir)`\" %s\n" % (target, target, target))
 
     for file in ant['FILES']:
         sfile = file.replace(".", "_")
diff --git a/clients/R/MonetDB.R/R/monetdb.R b/clients/R/MonetDB.R/R/monetdb.R
--- a/clients/R/MonetDB.R/R/monetdb.R
+++ b/clients/R/MonetDB.R/R/monetdb.R
@@ -148,7 +148,7 @@ setMethod("dbDisconnect", "MonetDBConnec
 })
 
 setMethod("dbListTables", "MonetDBConnection", def=function(conn, ..., 
sys_tables=F, schema_names=F, quote=F) {
-  q <- "select schemas.name as sn, tables.name as tn from tables join 
sys.schemas on tables.schema_id=schemas.id"
+  q <- "select schemas.name as sn, tables.name as tn from sys.tables join 
sys.schemas on tables.schema_id=schemas.id"
   if (!sys_tables) q <- paste0(q, " where tables.system=false")
   df <- dbGetQuery(conn, q)
   if (quote) {
diff --git a/clients/Tests/All b/clients/Tests/All
--- a/clients/Tests/All
+++ b/clients/Tests/All
@@ -1,8 +1,8 @@
 exports
-HAVE_GEOM&HAVE_CFITSIO&!HAVE_SPHINXCLIENT&!HAVE_GSL&!HAVE_LIBR?MAL-signatures
-HAVE_GEOM&HAVE_CFITSIO&!HAVE_SPHINXCLIENT&HAVE_GSL&!HAVE_LIBR?MAL-signatures_gsl
-HAVE_GEOM&HAVE_CFITSIO&HAVE_SPHINXCLIENT&!HAVE_GSL&!HAVE_LIBR?MAL-signatures_sphinxclient
-HAVE_GEOM&!HAVE_CFITSIO&!HAVE_SPHINXCLIENT&!HAVE_GSL&!HAVE_LIBR?MAL-signatures_nocfitsio
-HAVE_GEOM&!HAVE_GSL&!HAVE_LIBR?SQL-dump
-HAVE_GEOM&HAVE_GSL&!HAVE_LIBR?SQL-dump_gsl
-!HAVE_GEOM&!HAVE_GSL&!HAVE_LIBR?SQL-dump_nogeom
+HAVE_GEOM&HAVE_CFITSIO&!HAVE_SPHINXCLIENT&!HAVE_GSL&!HAVE_SAMTOOLS&!HAVE_LIBR?MAL-signatures
+HAVE_GEOM&HAVE_CFITSIO&!HAVE_SPHINXCLIENT&HAVE_GSL&!HAVE_SAMTOOLS&!HAVE_LIBR?MAL-signatures_gsl
+HAVE_GEOM&HAVE_CFITSIO&HAVE_SPHINXCLIENT&!HAVE_GSL&!HAVE_SAMTOOLS&!HAVE_LIBR?MAL-signatures_sphinxclient
+HAVE_GEOM&!HAVE_CFITSIO&!HAVE_SPHINXCLIENT&!HAVE_GSL&!HAVE_SAMTOOLS&!HAVE_LIBR?MAL-signatures_nocfitsio
+HAVE_GEOM&!HAVE_GSL&!HAVE_SAMTOOLS&!HAVE_LIBR?SQL-dump
+HAVE_GEOM&HAVE_GSL&!HAVE_SAMTOOLS&!HAVE_LIBR?SQL-dump_gsl
+!HAVE_GEOM&!HAVE_GSL&!HAVE_SAMTOOLS&!HAVE_LIBR?SQL-dump_nogeom
diff --git a/clients/examples/php/sqlsample.php 
b/clients/examples/php/sqlsample.php
--- a/clients/examples/php/sqlsample.php
+++ b/clients/examples/php/sqlsample.php
@@ -23,12 +23,12 @@
 require 'monetdb/php_monetdb.php';
 
 $db = monetdb_connect("sql", "localhost", $argv[1], "monetdb", "monetdb", 
$argv[2]);
-$tables = monetdb_query('SELECT name FROM tables');
+$tables = monetdb_query('SELECT name FROM tables LIMIT 10');
 
 for ($i = 0; $line = @monetdb_fetch_assoc($tables); $i++) {
        print($line['name']."\n");
 }
-$result = monetdb_query('SELECT name, schema_id, query, type, system, 
commit_action, readonly, temporary FROM tables');
+$result = monetdb_query('SELECT name, schema_id, query, type, system, 
commit_action, readonly, temporary FROM tables LIMIT 10');
 $cols = monetdb_num_fields($result);
 for ($i = 0; $i < $cols; $i++) {
        print(monetdb_field_name($result, $i)."\t");
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -116,7 +116,8 @@ enum formatters {
        XMLformatter,
        TESTformatter,
        CLEANformatter,
-       TIMERformatter
+       TIMERformatter,
+       SAMformatter
 };
 static enum formatters formatter = NOformatter;
 char *output = NULL;           /* output format as string */
@@ -1040,6 +1041,84 @@ TIMERrenderer(MapiHdl hdl)
        printf("%s\n", timerHuman());
 }
 
+
+static void
+SAMrenderer(MapiHdl hdl)
+{
+       /* Variables keeping track of which result set fields map to
+        * qname, flag etc. (-1 means that it does not occur in result
+        * set) */
+       int field_qname = -1;
+       int field_flag = -1;
+       int field_rname = -1;
+       int field_pos = -1;
+       int field_mapq = -1;
+       int field_cigar = -1;
+       int field_rnext = -1;
+       int field_pnext = -1;
+       int field_tlen = -1;
+       int field_seq = -1;
+       int field_qual = -1;
+
+       int field_count = mapi_get_field_count(hdl);
+       int t_fields;
+
+       int i;
+
+       /* First, initialize field variables properly */
+       for (i = 0; i < field_count; i++) {
+               char *field_name = mapi_get_name(hdl, i);
+               if (strcmp(field_name, "qname") == 0)
+                       field_qname = i;
+               else if (strcmp(field_name, "flag" ) == 0)
+                       field_flag  = i;
+               else if (strcmp(field_name, "rname") == 0)
+                       field_rname = i;
+               else if (strcmp(field_name, "pos"  ) == 0)
+                       field_pos   = i;
+               else if (strcmp(field_name, "mapq" ) == 0)
+                       field_mapq  = i;
+               else if (strcmp(field_name, "cigar") == 0)
+                       field_cigar = i;
+               else if (strcmp(field_name, "rnext") == 0)
+                       field_rnext = i;
+               else if (strcmp(field_name, "pnext") == 0)
+                       field_pnext = i;
+               else if (strcmp(field_name, "tlen" ) == 0)
+                       field_tlen  = i;
+               else if (strcmp(field_name, "seq"  ) == 0)
+                       field_seq   = i;
+               else if (strcmp(field_name, "qual" ) == 0)
+                       field_qual  = i;
+               else
+                       mnstr_printf(stderr_stream, "Unexpected column name in 
result set: '%s'. Data in this column is not used.\n", field_name);
+       }
+
+       /* Write all alignments */
+       while (!mnstr_errnr(toConsole) && (t_fields = fetch_row(hdl)) != 0) {
+               if (t_fields != field_count) {
+                       mnstr_printf(stderr_stream,
+                                    "invalid tuple received from server, "
+                                    "got %d columns, expected %d, ignoring\n", 
t_fields, field_count);
+                       continue;
+               }
+
+               /* Write fields to SAM line */
+               mnstr_printf(toConsole, 
"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
+                            (field_qname == -1 ? "*"   : mapi_fetch_field(hdl, 
field_qname)),
+                            (field_flag  == -1 ? "0"   : mapi_fetch_field(hdl, 
field_flag )),
+                            (field_rname == -1 ? "*"   : mapi_fetch_field(hdl, 
field_rname)),
+                            (field_pos   == -1 ? "0"   : mapi_fetch_field(hdl, 
field_pos  )),
+                            (field_mapq  == -1 ? "255" : mapi_fetch_field(hdl, 
field_mapq )),
+                            (field_cigar == -1 ? "*"   : mapi_fetch_field(hdl, 
field_cigar)),
+                            (field_rnext == -1 ? "*"   : mapi_fetch_field(hdl, 
field_rnext)),
+                            (field_pnext == -1 ? "0"   : mapi_fetch_field(hdl, 
field_pnext)),
+                            (field_tlen  == -1 ? "0"   : mapi_fetch_field(hdl, 
field_tlen )),
+                            (field_seq   == -1 ? "*"   : mapi_fetch_field(hdl, 
field_seq  )),
+                            (field_qual  == -1 ? "*"   : mapi_fetch_field(hdl, 
field_qual)));
+       }
+}
+
 static void
 SQLheader(MapiHdl hdl, int *len, int fields, char more)
 {
@@ -1390,6 +1469,8 @@ setFormatter(char *s)
                formatter = TESTformatter;
        } else if (strcmp(s, "timer") == 0) {
                formatter = TIMERformatter;
+       } else if (strcmp(s, "sam") == 0) {
+               formatter = SAMformatter;
        } else {
                mnstr_printf(toConsole, "unsupported formatter\n");
        }
@@ -1611,6 +1692,9 @@ format_result(Mapi mid, MapiHdl hdl, cha
                        case TIMERformatter:
                                TIMERrenderer(hdl);
                                break;
+                       case SAMformatter:
+                               SAMrenderer(hdl);
+                               break;
                        default:
                                RAWrenderer(hdl);
                                break;
@@ -1826,7 +1910,7 @@ showCommands(void)
                mnstr_printf(toConsole, "\\a      - disable auto commit\n");
        }
        mnstr_printf(toConsole, "\\e      - echo the query in sql formatting 
mode\n");
-       mnstr_printf(toConsole, "\\f      - format using a built-in renderer 
{csv,tab,raw,sql,xml}\n");
+       mnstr_printf(toConsole, "\\f      - format using a built-in renderer 
{csv,tab,raw,sql,xml,sam}\n");
        mnstr_printf(toConsole, "\\w#     - set maximal page width 
(-1=unlimited, 0=terminal width, >0=limit to num)\n");
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to