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