Changeset: 3936a187f5e7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3936a187f5e7
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/SQL-dump.stable.out
        clients/Tests/SQL-dump.stable.out.int128
        clients/Tests/exports.stable.out
        monetdb5/modules/atoms/str.c
        monetdb5/modules/atoms/str.h
        monetdb5/modules/atoms/str.mal
        monetdb5/modules/kernel/batstr.c
        monetdb5/modules/kernel/batstr.mal
        sql/common/sql_types.c
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/var_char_cast_truncate.SF-1150907.stable.out
        sql/test/Tests/string.stable.out
Branch: Jul2015
Log Message:

properly return full string length (fixes bug 3999)


diffs (275 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -2961,10 +2961,6 @@ command batstr.startsWith(s:bat[:oid,:st
 address STRbatPrefix;
 comment Prefix check.
 
-command batstr.stringlength(s:bat[:oid,:str]):bat[:oid,:int] 
-address STRbatstringLength;
-comment Return the length of a right trimed string.
-
 command batstr.trim(s:bat[:oid,:str],s2:bat[:oid,:str]):bat[:oid,:str] 
 address STRbatStrip2_bat;
 comment Strip characters in the second strings around the first strings.
@@ -41229,10 +41225,6 @@ command str.startsWith(s:str,prefix:str)
 address STRPrefix;
 comment Prefix check.
 
-command str.stringlength(s:str):int 
-address STRstringLength;
-comment Return the length of a right trimed string (SQL semantics).
-
 command str.string(s:str,offset:int,count:int):str 
 address STRSubString;
 comment Return substring s[offset..offset+count] of a string s[0..n]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -3484,10 +3484,6 @@ command batstr.startsWith(s:bat[:oid,:st
 address STRbatPrefix;
 comment Prefix check.
 
-command batstr.stringlength(s:bat[:oid,:str]):bat[:oid,:int] 
-address STRbatstringLength;
-comment Return the length of a right trimed string.
-
 command batstr.trim(s:bat[:oid,:str],s2:bat[:oid,:str]):bat[:oid,:str] 
 address STRbatStrip2_bat;
 comment Strip characters in the second strings around the first strings.
@@ -52172,10 +52168,6 @@ command str.startsWith(s:str,prefix:str)
 address STRPrefix;
 comment Prefix check.
 
-command str.stringlength(s:str):int 
-address STRstringLength;
-comment Return the length of a right trimed string (SQL semantics).
-
 command str.string(s:str,offset:int,count:int):str 
 address STRSubString;
 comment Return substring s[offset..offset+count] of a string s[0..n]
diff --git a/clients/Tests/SQL-dump.stable.out 
b/clients/Tests/SQL-dump.stable.out
--- a/clients/Tests/SQL-dump.stable.out
+++ b/clients/Tests/SQL-dump.stable.out
@@ -1503,9 +1503,9 @@ drop function pcre_replace(string, strin
 [ NULL,        "left_shift",   "<<",   "calc", 0,      1,      false,  false,  
false   ]
 [ NULL,        "left_shift",   "<<",   "calc", 0,      1,      false,  false,  
false   ]
 [ NULL,        "left_shift",   "<<",   "calc", 0,      1,      false,  false,  
false   ]
-[ NULL,        "length",       "stringlength", "str",  0,      1,      false,  
false,  false   ]
-[ NULL,        "length",       "stringlength", "str",  0,      1,      false,  
false,  false   ]
-[ NULL,        "length",       "stringlength", "str",  0,      1,      false,  
false,  false   ]
+[ NULL,        "length",       "length",       "str",  0,      1,      false,  
false,  false   ]
+[ NULL,        "length",       "length",       "str",  0,      1,      false,  
false,  false   ]
+[ NULL,        "length",       "length",       "str",  0,      1,      false,  
false,  false   ]
 [ NULL,        "levenshtein",  "levenshtein",  "txtsim",       0,      1,      
false,  false,  false   ]
 [ NULL,        "levenshtein",  "levenshtein",  "txtsim",       0,      1,      
false,  false,  false   ]
 [ NULL,        "levenshtein",  "levenshtein",  "txtsim",       0,      1,      
false,  false,  false   ]
diff --git a/clients/Tests/SQL-dump.stable.out.int128 
b/clients/Tests/SQL-dump.stable.out.int128
--- a/clients/Tests/SQL-dump.stable.out.int128
+++ b/clients/Tests/SQL-dump.stable.out.int128
@@ -1521,9 +1521,9 @@ drop function pcre_replace(string, strin
 [ NULL,        "left_shift",   "<<",   "calc", 0,      1,      false,  false,  
false   ]
 [ NULL,        "left_shift",   "<<",   "calc", 0,      1,      false,  false,  
false   ]
 [ NULL,        "left_shift",   "<<",   "calc", 0,      1,      false,  false,  
false   ]
-[ NULL,        "length",       "stringlength", "str",  0,      1,      false,  
false,  false   ]
-[ NULL,        "length",       "stringlength", "str",  0,      1,      false,  
false,  false   ]
-[ NULL,        "length",       "stringlength", "str",  0,      1,      false,  
false,  false   ]
+[ NULL,        "length",       "length",       "str",  0,      1,      false,  
false,  false   ]
+[ NULL,        "length",       "length",       "str",  0,      1,      false,  
false,  false   ]
+[ NULL,        "length",       "length",       "str",  0,      1,      false,  
false,  false   ]
 [ NULL,        "levenshtein",  "levenshtein",  "txtsim",       0,      1,      
false,  false,  false   ]
 [ NULL,        "levenshtein",  "levenshtein",  "txtsim",       0,      1,      
false,  false,  false   ]
 [ NULL,        "levenshtein",  "levenshtein",  "txtsim",       0,      1,      
false,  false,  false   ]
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1874,7 +1874,6 @@ str STRRpad(str *res, const str *arg1, c
 str STRRpad2(str *res, const str *arg1, const int *len, const str *arg2);
 str STRRtrim(str *res, const str *arg1);
 str STRRtrim2(str *res, const str *arg1, const str *arg2);
-str STRSQLLength(int *res, const str *s);
 str STRStrip(str *res, const str *arg1);
 str STRStrip2(str *res, const str *arg1, const str *arg2);
 str STRSubString(str *res, const str *arg1, const int *offset, const int 
*length);
@@ -1922,7 +1921,6 @@ str STRbatWChrAt(bat *ret, const bat *l,
 str STRbatWChrAtcst(bat *ret, const bat *l, const int *cst);
 str STRbatstrSearch(bat *ret, const bat *l, const bat *r);
 str STRbatstrSearchcst(bat *ret, const bat *l, const str *cst);
-str STRbatstringLength(bat *ret, const bat *l);
 str STRbatsubstring(bat *ret, const bat *l, const bat *r, const bat *t);
 str STRbatsubstringcst(bat *ret, const bat *bid, const int *start, const int 
*length);
 str STRcodeset(str *res);
@@ -1937,7 +1935,6 @@ str STRreplace(str *ret, const str *s1, 
 str STRspace(str *ret, const int *l);
 str STRsplitpart(str *res, str *haystack, str *needle, int *field);
 str STRstrSearch(int *res, const str *arg1, const str *arg2);
-str STRstringLength(int *res, const str *s);
 str STRsubstring(str *ret, const str *s, const int *start, const int *l);
 str STRsubstringTail(str *ret, const str *s, const int *start);
 str STRsuffix(str *ret, const str *s, const int *l);
diff --git a/monetdb5/modules/atoms/str.c b/monetdb5/modules/atoms/str.c
--- a/monetdb5/modules/atoms/str.c
+++ b/monetdb5/modules/atoms/str.c
@@ -1500,18 +1500,6 @@ convertCase(BAT *from, BAT *to, str *res
        throw(MAL, malfunc, "Allocation failed");
 }
 
-str
-STRSQLLength(int *res, const str *s)
-{
-       str r = NULL;
-       str msg;
-       if ((msg = STRRtrim(&r, s)) != MAL_SUCCEED)
-               return msg;
-       STRLength(res, &r);
-       GDKfree(r);
-       return MAL_SUCCEED;
-}
-
 /*
  * Here you find the wrappers around the version 4 library code
  * It also contains the direct implementation of the string
@@ -2550,15 +2538,3 @@ STRspace(str *ret, const int *l){
        char buf[]= " ", *s= buf;
        return STRrepeat(ret,&s,l);
 }
-
-str
-STRstringLength(int *res, const str *s)
-{
-       str r = NULL;
-       STRRtrim(&r, s);
-       STRLength(res, &r);
-       GDKfree(r);
-       return MAL_SUCCEED;
-}
-
-
diff --git a/monetdb5/modules/atoms/str.h b/monetdb5/modules/atoms/str.h
--- a/monetdb5/modules/atoms/str.h
+++ b/monetdb5/modules/atoms/str.h
@@ -28,8 +28,6 @@ str_export str strEpilogue(void *ret);
 str_export str STRtostr(str *res, const str *src);
 str_export str STRConcat(str *res, const str *val1, const str *val2);
 str_export str STRLength(int *res, const str *arg1);
-/* length of rtrimed string, needed for sql */
-str_export str STRstringLength(int *res, const str *s);
 str_export str STRBytes(int *res, const str *arg1);
 str_export str STRTail(str *res, const str *arg1, const int *offset);
 str_export str STRSubString(str *res, const str *arg1, const int *offset, 
const int *length);
@@ -56,7 +54,6 @@ str_export str STRLpad2(str *res, const 
 str_export str STRRpad2(str *res, const str *arg1, const int *len, const str 
*arg2);
 str_export str STRSubstitute(str *res, const str *arg1, const str *arg2, const 
str *arg3, const bit *g);
 
-str_export str STRSQLLength(int *res, const str *s);
 str_export str STRsubstringTail(str *ret, const str *s, const int *start);
 str_export str STRsubstring(str *ret, const str *s, const int *start, const 
int *l);
 str_export str STRlikewrap2(bit *ret, const str *s, const str *pat);
diff --git a/monetdb5/modules/atoms/str.mal b/monetdb5/modules/atoms/str.mal
--- a/monetdb5/modules/atoms/str.mal
+++ b/monetdb5/modules/atoms/str.mal
@@ -24,10 +24,6 @@ command length( s:str ) :int
 address STRLength
 comment "Return the length of a string.";
 
-command stringlength( s:str ) :int
-address STRstringLength
-comment "Return the length of a right trimed string (SQL semantics).";
-
 command nbytes( s:str ) :int
 address STRBytes
 comment "Return the string length in bytes.";
diff --git a/monetdb5/modules/kernel/batstr.c b/monetdb5/modules/kernel/batstr.c
--- a/monetdb5/modules/kernel/batstr.c
+++ b/monetdb5/modules/kernel/batstr.c
@@ -72,7 +72,6 @@ batstr_export str STRbatLpad2_bat_bat(ba
 batstr_export str STRbatRpad2_bat_bat(bat *ret, const bat *l, const bat *n, 
const bat *l2);
 
 batstr_export str STRbatLength(bat *ret, const bat *l);
-batstr_export str STRbatstringLength(bat *ret, const bat *l);
 batstr_export str STRbatBytes(bat *ret, const bat *l);
 
 batstr_export str STRbatsubstringcst(bat *ret, const bat *bid, const int 
*start, const int *length);
@@ -176,12 +175,6 @@ STRbatLength(bat *ret, const bat *l)
 }
 
 str
-STRbatstringLength(bat *ret, const bat *l)
-{
-       return do_batstr_int(ret, l, "batstr.stringLength", STRSQLLength);
-}
-
-str
 STRbatBytes(bat *ret, const bat *l)
 {
        return do_batstr_int(ret, l, "batstr.Bytes", STRBytes);
diff --git a/monetdb5/modules/kernel/batstr.mal 
b/monetdb5/modules/kernel/batstr.mal
--- a/monetdb5/modules/kernel/batstr.mal
+++ b/monetdb5/modules/kernel/batstr.mal
@@ -10,10 +10,6 @@ command batstr.length( s:bat[:oid,:str] 
 address STRbatLength
 comment "Return the length of a string.";
 
-command batstr.stringlength( s:bat[:oid,:str] ) :bat[:oid,:int]
-address STRbatstringLength
-comment "Return the length of a right trimed string.";
-
 command batstr.nbytes( s:bat[:oid,:str] ) :bat[:oid,:int]
 address STRbatBytes
 comment "Return the string length in bytes.";
diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -1626,7 +1626,7 @@ sqltypeinit( sql_allocator *sa)
                sql_create_func(sa, "concat", "calc", "+", *t, *t, *t, 
DIGITS_ADD);
                sql_create_func(sa, "ascii", "str", "ascii", *t, NULL, INT, 
SCALE_NONE);
                sql_create_func(sa, "code", "str", "unicode", INT, NULL, *t, 
SCALE_NONE);
-               sql_create_func(sa, "length", "str", "stringlength", *t, NULL, 
INT, SCALE_NONE);
+               sql_create_func(sa, "length", "str", "length", *t, NULL, INT, 
SCALE_NONE);
                sql_create_func(sa, "right", "str", "stringright", *t, INT, *t, 
SCALE_NONE);
                sql_create_func(sa, "left", "str", "stringleft", *t, INT, *t, 
SCALE_NONE);
                sql_create_func(sa, "upper", "str", "toUpper", *t, NULL, *t, 
SCALE_NONE);
diff --git 
a/sql/test/BugDay_2005-10-06_2.9.3/Tests/var_char_cast_truncate.SF-1150907.stable.out
 
b/sql/test/BugDay_2005-10-06_2.9.3/Tests/var_char_cast_truncate.SF-1150907.stable.out
--- 
a/sql/test/BugDay_2005-10-06_2.9.3/Tests/var_char_cast_truncate.SF-1150907.stable.out
+++ 
b/sql/test/BugDay_2005-10-06_2.9.3/Tests/var_char_cast_truncate.SF-1150907.stable.out
@@ -24,24 +24,24 @@ Ready.
 [ 1    ]
 [ 1    ]
 #select cast(str as varchar(4)), length(cast(str as varchar(4))) from t11;
-% sys.L1,      sys.L1 # table_name
+% sys.L1,      sys.L2 # table_name
 % L1,  length_truncate_str # name
 % varchar,     int # type
 % 4,   1 # length
 [ "bla",       3       ]
 [ "blab",      4       ]
 [ "5", 1       ]
-[ "bla ",      3       ]
+[ "bla ",      4       ]
 [ "blad",      4       ]
 #select cast(str as char(4)), length(cast(str as char(4))) from t11;
-% sys.L1,      sys.L1 # table_name
+% sys.L1,      sys.L2 # table_name
 % L1,  length_truncate_str # name
 % char,        int # type
 % 4,   1 # length
 [ "bla",       3       ]
 [ "blab",      4       ]
 [ "5", 1       ]
-[ "bla ",      3       ]
+[ "bla ",      4       ]
 [ "blad",      4       ]
 
 # 12:44:10 >  
diff --git a/sql/test/Tests/string.stable.out b/sql/test/Tests/string.stable.out
--- a/sql/test/Tests/string.stable.out
+++ b/sql/test/Tests/string.stable.out
@@ -45,7 +45,7 @@ Ready.
 [ 0,   ""      ]
 [ 4,   "test"  ]
 [ 0,   ""      ]
-[ 5,   " Test "        ]
+[ 6,   " Test "        ]
 #select substring(str from 2 for 8), str2 from stringtest;
 % sys.L1,      sys.stringtest # table_name
 % L1,  str2 # name
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to