Changeset: 051c1345dbf6 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=051c1345dbf6 Added Files: sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.sql.in sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.txt sql/test/snodgrass/Tests/cast_select.sql Removed Files: sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.sql sql/test/snodgrass/Tests/cast_select.SQL.bat sql/test/snodgrass/Tests/cast_select.SQL.sh sql/test/snodgrass/cast_select.sql Modified Files: monetdb5/modules/atoms/url.mx sql/server/sql_statement.c sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.stable.err sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.stable.out sql/test/snodgrass/Tests/All sql/test/snodgrass/Tests/cast_select.stable.err sql/test/snodgrass/Tests/cast_select.stable.out testing/Mtest.py.in Branch: default Log Message:
Merge with Apr2012 branch. diffs (truncated from 809 to 300 lines): diff --git a/monetdb5/modules/atoms/url.mx b/monetdb5/modules/atoms/url.mx --- a/monetdb5/modules/atoms/url.mx +++ b/monetdb5/modules/atoms/url.mx @@ -996,9 +996,46 @@ URLgetBasename(str *retval, str *t) str URLgetContent(str *retval, str *Str1) { - (void) Str1; /* fool compiler */ - *retval = 0; - throw(MAL, "url.getContent", "not yet implemented"); + stream *f; + str retbuf = NULL; + str oldbuf = NULL; + char *buf[8096]; + size_t len; + size_t rlen; + + if ((f = open_urlstream(*Str1)) == NULL) + throw(MAL, "url.getContent", "failed to open urlstream"); + + if (mnstr_errnr(f) != 0) { + str err = createException(MAL, "url.getContent", + "opening stream failed: %s", mnstr_error(f)); + mnstr_destroy(f); + *retval = NULL; + return err; + } + + rlen = 0; + while ((len = mnstr_read(f, buf, 1, sizeof(buf))) != 0) { + if (retbuf != NULL) { + oldbuf = retbuf; + retbuf = GDKrealloc(retbuf, rlen + len + 1); + } else { + retbuf = GDKmalloc(len + 1); + } + if (retbuf == NULL) { + if (oldbuf != NULL) + GDKfree(oldbuf); + mnstr_destroy(f); + throw(MAL, "url.getContent", "contents too large"); + } + oldbuf = NULL; + (void)memcpy(retbuf + rlen, buf, len); + rlen += len; + } + retbuf[rlen] = '\0'; + + *retval = retbuf; + return MAL_SUCCEED; } str diff --git a/sql/server/sql_statement.c b/sql/server/sql_statement.c --- a/sql/server/sql_statement.c +++ b/sql/server/sql_statement.c @@ -1981,6 +1981,8 @@ _table_name(sql_allocator *sa, stmt *st) case st_atom: if (st->op4.aval->data.vtype == TYPE_str && st->op4.aval->data.val.sval && _strlen(st->op4.aval->data.val.sval)) return st->op4.aval->data.val.sval; + return NULL; + case st_list: if (list_length(st->op4.lval) && st->op4.lval->h) return table_name(sa, st->op4.lval->h->data); diff --git a/sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.sql b/sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.sql.in rename from sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.sql rename to sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.sql.in --- a/sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.sql +++ b/sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.sql.in @@ -8,8 +8,6 @@ select getAnchor(u) from t; select getBasename(u) from t; -select getContent(u) from t; - select getContext(u) from t; select getDomain(u) from t; @@ -38,3 +36,12 @@ select newurl('https','www.monetdb.org', select newurl('https','localhost','boe'); drop table t; + +create table t(u url); + +-- this works on UNIX, on Windows we likely need an extra / after file:// +insert into t values ('file://$TSTSRCDIR/url_script_test.Bug-2972.txt'); + +select getContent(u) from t; + +drop table t; diff --git a/sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.stable.err b/sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.stable.err --- a/sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.stable.err +++ b/sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.stable.err @@ -1,37 +1,3 @@ stderr of test 'url_script_test.Bug-2972` in directory 'test/BugTracker-2012` itself: -# 14:12:34 > -# 14:12:34 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "gdk_dbfarm=/ufs/manegold/_/Monet/HG/Dec2011/prefix/--disable-debug_--enable-optimize_--disable-assert/var/MonetDB" "--set" "mapi_open=true" "--set" "mapi_port=36122" "--set" "monet_prompt=" "--trace" "--forcemito" "--set" "mal_listing=2" "--dbname=mTests_test_BugTracker-2012" "--set" "mal_listing=0" -# 14:12:34 > - -# builtin opt gdk_dbname = demo -# builtin opt gdk_dbfarm = /ufs/manegold/_/Monet/HG/Dec2011/prefix/--disable-debug_--enable-optimize_--disable-assert/var/monetdb5/dbfarm -# builtin opt gdk_debug = 0 -# builtin opt gdk_alloc_map = no -# builtin opt gdk_vmtrim = yes -# 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 gdk_dbfarm = /ufs/manegold/_/Monet/HG/Dec2011/prefix/--disable-debug_--enable-optimize_--disable-assert/var/MonetDB -# cmdline opt mapi_open = true -# cmdline opt mapi_port = 36122 -# cmdline opt monet_prompt = -# cmdline opt mal_listing = 2 -# cmdline opt gdk_dbname = mTests_test_BugTracker-2012 -# cmdline opt mal_listing = 0 - -# 14:12:34 > -# 14:12:34 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=rome" "--port=36122" -# 14:12:34 > - - -# 14:12:34 > -# 14:12:34 > "Done." -# 14:12:34 > - diff --git a/sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.stable.out b/sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.stable.out --- a/sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.stable.out +++ b/sql/test/BugTracker-2012/Tests/url_script_test.Bug-2972.stable.out @@ -1,31 +1,195 @@ stdout of test 'url_script_test.Bug-2972` in directory 'test/BugTracker-2012` itself: -# 14:12:34 > -# 14:12:34 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "gdk_dbfarm=/ufs/manegold/_/Monet/HG/Dec2011/prefix/--disable-debug_--enable-optimize_--disable-assert/var/MonetDB" "--set" "mapi_open=true" "--set" "mapi_port=36122" "--set" "monet_prompt=" "--trace" "--forcemito" "--set" "mal_listing=2" "--dbname=mTests_test_BugTracker-2012" "--set" "mal_listing=0" -# 14:12:34 > +# 06:50:52 > +# 06:50:52 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "gdk_dbfarm=/export/scratch/fabian/monetdb/Apr2012/mtest-zonnestraal/sql/dbfarm" "--set" "mapi_open=true" "--set" "mapi_port=38767" "--set" "monet_prompt=" "--trace" "--forcemito" "--set" "mal_listing=2" "--dbname=mTests_test_BugTracker-2012" "--set" "mal_listing=0" +# 06:50:52 > -# MonetDB 5 server v11.7.2 -# This is an unreleased version -# Serving database 'mTests_test_BugTracker-2012', using 8 threads -# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked -# Found 15.662 GiB available main-memory. +# MonetDB 5 server v11.9.0 "Apr2012-88aa9e3f55fc" +# Serving database 'mTests_test_BugTracker-2012', using 64 threads +# Compiled for sparc-sun-solaris2.10/32bit with 32bit OIDs dynamically linked +# Found 4.000 GiB available main-memory. # Copyright (c) 1993-July 2008 CWI. # Copyright (c) August 2008-2012 MonetDB B.V., all rights reserved # Visit http://www.monetdb.org/ for further information -# Listening for connection requests on mapi:monetdb://rome.ins.cwi.nl:36122/ +# Listening for connection requests on mapi:monetdb://zonnestraal:38767/ # MonetDB/GIS module loaded # MonetDB/SQL module loaded Ready. +# SQL catalog created, loading sql scripts once +# loading sql script: 09_like.sql +# loading sql script: 10_math.sql +# loading sql script: 11_times.sql +# loading sql script: 12_url.sql +# loading sql script: 13_date.sql +# loading sql script: 14_inet.sql +# loading sql script: 15_history.sql +# loading sql script: 16_tracelog.sql +# loading sql script: 17_compress.sql +# loading sql script: 18_dictionary.sql +# loading sql script: 19_cluster.sql +# loading sql script: 20_vacuum.sql +# loading sql script: 21_dependency_functions.sql +# loading sql script: 22_clients.sql +# loading sql script: 23_skyserver.sql +# loading sql script: 24_zorder.sql +# loading sql script: 25_debug.sql +# loading sql script: 39_analytics.sql +# loading sql script: 40_geom.sql +# loading sql script: 80_udf.sql +# loading sql script: 99_system.sql -# 14:12:34 > -# 14:12:34 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=rome" "--port=36122" -# 14:12:34 > +# 06:50:54 > +# 06:50:54 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=zonnestraal" "--port=38767" +# 06:50:54 > -! To be checked & approved ! +#create table t(u url); +#insert into t values('http://www.cwi.nl/~mk/vision2011.pdf'); +[ 1 ] +#insert into t values('http://www.monetdb.com?x=2'); +[ 1 ] +#insert into t values('http://www.monetdb.org:8080/Documentation/Manuals/SQLreference/Datamanipulation'); +[ 1 ] +#select getAnchor(u) from t; +% sys. # table_name +% getanchor_u # name +% clob # type +% 0 # length +[ NULL ] +[ NULL ] +[ NULL ] +#select getBasename(u) from t; +% sys. # table_name +% getbasename_u # name +% clob # type +% 16 # length +[ "vision2011" ] +[ "www" ] +[ "Datamanipulation" ] +#select getContext(u) from t; +% sys. # table_name +% getcontext_u # name +% clob # type +% 52 # length +[ "/~mk/vision2011.pdf" ] +[ NULL ] +[ "/Documentation/Manuals/SQLreference/Datamanipulation" ] +#select getDomain(u) from t; +% sys. # table_name +% getdomain_u # name +% clob # type +% 7 # length +[ "nl" ] +[ "com?x=2" ] +[ "org" ] +#select getExtension(u) from t; +% sys. # table_name +% getextension_u # name +% clob # type +% 15 # length +[ "pdf" ] +[ "monetdb.com?x=2" ] +[ NULL ] +#select getFile(u) from t; +% sys. # table_name +% getfile_u # name +% clob # type +% 19 # length +[ "vision2011.pdf" ] +[ "www.monetdb.com?x=2" ] +[ "Datamanipulation" ] +#select getHost(u) from t; +% sys. # table_name +% gethost_u # name +% clob # type +% 20 # length +[ "www.cwi.nl" ] +[ "www.monetdb.com?x=2" ] +[ "www.monetdb.org:8080" ] +#select getPort(u) from t; +% sys. # table_name +% getport_u # name +% clob # type +% 4 # length +[ NULL ] +[ NULL ] +[ "8080" ] +#select getQuery(u) from t; +% sys. # table_name +% getquery_u # name +% clob # type +% 3 # length +[ NULL ] +[ "x=2" ] +[ NULL ] +#select getUser(u) from t; +% sys. # table_name +% getuser_u # name +% clob # type +% 2 # length +[ "mk" ] +[ NULL ] +[ NULL ] +#select getRobotURL(u) from t; +% sys. # table_name +% getroboturl_u # name +% clob # type +% 38 # length +[ "http://www.cwi.nl/robots.txt" ] +[ "http://www.monetdb.com?x=2/robots.txt" ] +[ "http://www.monetdb.org:8080/robots.txt" ] +#select isaURL(u) from t; +% sys. # table_name +% isaurl_u # name +% boolean # type +% 5 # length +[ true ] +[ true ] +[ true ] +#select isaURL('http://www.monetdb.org'); _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list