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

Reply via email to