Changeset: 3b2c82d4448b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3b2c82d4448b
Branch: default
Log Message:
Merge branch ascii-flag into default.
diffs (truncated from 19798 to 300 lines):
diff --git a/clients/Tests/MAL-signatures-hge.test
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -34319,6 +34319,16 @@ pattern batstr.asciify(X_0:bat[:str], X_
BATSTRasciify;
Transform BAT of strings from UTF8 to ASCII
batstr
+caseFold
+pattern batstr.caseFold(X_0:bat[:str]):bat[:str]
+STRbatCaseFold;
+Fold the case of a string.
+batstr
+caseFold
+pattern batstr.caseFold(X_0:bat[:str], X_1:bat[:oid]):bat[:str]
+STRbatCaseFold;
+Fold the case of a string.
+batstr
contains
pattern batstr.contains(X_0:bat[:str], X_1:bat[:str]):bat[:bit]
BATSTRcontains;
@@ -50299,6 +50309,11 @@ command str.asciify(X_0:str):str
STRasciify;
Transform string from UTF8 to ASCII
str
+caseFold
+command str.caseFold(X_0:str):str
+STRcasefold;
+Fold the case of a string.
+str
contains
pattern str.contains(X_0:str, X_1:str):bit
STRcontains;
@@ -50379,11 +50394,6 @@ pattern str.endswithselect(X_0:bat[:str]
STRendswithselect;
Select all head values of the first input BAT for which the@tail value end
with the given suffix + icase.
str
-epilogue
-command str.epilogue():void
-STRepilogue;
-(empty)
-str
insert
command str.insert(X_0:str, X_1:int, X_2:int, X_3:str):str
STRinsert;
diff --git a/clients/Tests/MAL-signatures.test
b/clients/Tests/MAL-signatures.test
--- a/clients/Tests/MAL-signatures.test
+++ b/clients/Tests/MAL-signatures.test
@@ -25409,6 +25409,16 @@ pattern batstr.asciify(X_0:bat[:str], X_
BATSTRasciify;
Transform BAT of strings from UTF8 to ASCII
batstr
+caseFold
+pattern batstr.caseFold(X_0:bat[:str]):bat[:str]
+STRbatCaseFold;
+Fold the case of a string.
+batstr
+caseFold
+pattern batstr.caseFold(X_0:bat[:str], X_1:bat[:oid]):bat[:str]
+STRbatCaseFold;
+Fold the case of a string.
+batstr
contains
pattern batstr.contains(X_0:bat[:str], X_1:bat[:str]):bat[:bit]
BATSTRcontains;
@@ -38664,6 +38674,11 @@ command str.asciify(X_0:str):str
STRasciify;
Transform string from UTF8 to ASCII
str
+caseFold
+command str.caseFold(X_0:str):str
+STRcasefold;
+Fold the case of a string.
+str
contains
pattern str.contains(X_0:str, X_1:str):bit
STRcontains;
@@ -38744,11 +38759,6 @@ pattern str.endswithselect(X_0:bat[:str]
STRendswithselect;
Select all head values of the first input BAT for which the@tail value end
with the given suffix + icase.
str
-epilogue
-command str.epilogue():void
-STRepilogue;
-(empty)
-str
insert
command str.insert(X_0:str, X_1:int, X_2:int, X_3:str):str
STRinsert;
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
@@ -16,6 +16,7 @@ BAT *BATallnotequal_grp2(BAT *l, BAT *r,
BAT *BATanyequal_grp(BAT *l, BAT *r, BAT *g, BAT *e, BAT *s);
BAT *BATanyequal_grp2(BAT *l, BAT *r, BAT *rid, BAT *g, BAT *e, BAT *s);
gdk_return BATappend(BAT *b, BAT *n, BAT *s, bool force)
__attribute__((__warn_unused_result__));
+BAT *BATasciify(BAT *b, BAT *s);
void BATassertProps(BAT *b);
atomDesc BATatoms[MAXATOMS];
BAT *BATattach(int tt, const char *heapfile, role_t role);
@@ -108,6 +109,7 @@ dbl BATcalcvariance_population(dbl *avgp
dbl BATcalcvariance_sample(dbl *avgp, BAT *b);
BAT *BATcalcxor(BAT *b1, BAT *b2, BAT *s1, BAT *s2);
BAT *BATcalcxorcst(BAT *b, const ValRecord *v, BAT *s);
+BAT *BATcasefold(BAT *b, BAT *s);
bool BATcheckorderidx(BAT *b);
gdk_return BATclear(BAT *b, bool force);
void BATcommit(BAT *b, BUN size);
@@ -204,6 +206,8 @@ gdk_return BATsum(void *res, int tp, BAT
const char *BATtailname(const BAT *b);
gdk_return BATthetajoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT
*sr, int op, bool nil_matches, BUN estimate)
__attribute__((__warn_unused_result__));
BAT *BATthetaselect(BAT *b, BAT *s, const void *val, const char *op);
+BAT *BATtolower(BAT *b, BAT *s);
+BAT *BATtoupper(BAT *b, BAT *s);
void BATtseqbase(BAT *b, oid o);
BAT *BATunique(BAT *b, BAT *s);
BAT *BATunmask(BAT *b);
@@ -265,7 +269,9 @@ gdk_return GDKanalyticalntile(BAT *r, BA
gdk_return GDKanalyticalprod(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e,
int tp1, int tp2, int frame_type);
gdk_return GDKanalyticalsum(BAT *r, BAT *p, BAT *o, BAT *b, BAT *s, BAT *e,
int tp1, int tp2, int frame_type);
gdk_return GDKanalyticalwindowbounds(BAT *r, BAT *b, BAT *p, BAT *l, const
void *restrict bound, int tp1, int tp2, int unit, bool preceding, oid
first_half);
+gdk_return GDKasciify(char **restrict buf, size_t *restrict buflen, const char
*restrict s);
int GDKatomcnt;
+gdk_return GDKcasefold(char **restrict buf, size_t *restrict buflen, const
char *restrict s);
void GDKclrerr(void);
gdk_return GDKcopyenv(BAT **key, BAT **val, bool writable);
gdk_return GDKcreatedir(const char *nme);
@@ -317,8 +323,13 @@ void GDKsetmallocsuccesscount(lng count)
stream *GDKstdin;
stream *GDKstdout;
ssize_t GDKstrFromStr(unsigned char *restrict dst, const unsigned char
*restrict src, ssize_t len, char quote);
+int GDKstrcasecmp(const char *s1, const char *s2);
+char *GDKstrcasestr(const char *haystack, const char *needle);
str GDKstrdup(const char *s) __attribute__((__malloc__))
__attribute__((__warn_unused_result__));
+int GDKstrncasecmp(const char *str1, const char *str2, size_t l1, size_t l2);
str GDKstrndup(const char *s, size_t n) __attribute__((__malloc__))
__attribute__((__warn_unused_result__));
+gdk_return GDKtolower(char **restrict buf, size_t *restrict buflen, const char
*restrict s);
+gdk_return GDKtoupper(char **restrict buf, size_t *restrict buflen, const char
*restrict s);
gdk_return GDKtracer_fill_comp_info(BAT *id, BAT *component, BAT *log_level);
gdk_return GDKtracer_flush_buffer(void);
const char *GDKtracer_get_component_level(const char *comp);
@@ -1669,8 +1680,6 @@ FILE *getFile(stream *s);
int getFileNo(stream *s);
size_t getFileSize(stream *s);
stream *gz_stream(stream *inner, int preset);
-stream *iconv_rstream(stream *restrict ss, const char *restrict charset, const
char *restrict name);
-stream *iconv_wstream(stream *restrict ss, const char *restrict charset, const
char *restrict name);
bool isa_block_stream(const stream *s);
stream *lz4_stream(stream *inner, int preset);
stream *mapi_request_download(const char *filename, bool binary, bstream *rs,
stream *ws);
diff --git a/clients/examples/C/CMakeLists.txt
b/clients/examples/C/CMakeLists.txt
--- a/clients/examples/C/CMakeLists.txt
+++ b/clients/examples/C/CMakeLists.txt
@@ -43,11 +43,17 @@ target_link_libraries(smack01
add_executable(streamcat
streamcat.c)
+target_include_directories(streamcat
+ PRIVATE
+ $<$<BOOL:${Iconv_IS_BUILT_IN}>:${CMAKE_REQUIRED_INCLUDES}>
+ ../../mapiclient)
+
target_link_libraries(streamcat
PRIVATE
monetdb_config_header
stream
- $<$<BOOL:${CURL_FOUND}>:CURL::libcurl>)
+ $<$<BOOL:${CURL_FOUND}>:CURL::libcurl>
+ $<$<BOOL:${Iconv_FOUND}>:Iconv::Iconv>)
add_executable(testcondvar
testcondvar.c)
diff --git a/clients/examples/C/streamcat.c b/clients/examples/C/streamcat.c
--- a/clients/examples/C/streamcat.c
+++ b/clients/examples/C/streamcat.c
@@ -437,68 +437,20 @@ opener_rastream(char *filename)
}
#ifdef HAVE_CURL
-#include <curl/curl.h>
-
-#ifndef CURL_WRITEFUNC_ERROR
-#define CURL_WRITEFUNC_ERROR 0
-#endif
-
-static size_t
-write_callback(char *buffer, size_t size, size_t nitems, void *userp)
-{
- stream *s = userp;
-
- /* size is expected to always be 1 */
-
- ssize_t sz = mnstr_write(s, buffer, size, nitems);
- if (sz < 0)
- return CURL_WRITEFUNC_ERROR; /* indicate failure to library */
- return (size_t) sz * size;
-}
+#include "curl-stream.h"
static stream *
-open_urlstream(const char *url)
+opener_urlstream(char *url)
{
- CURL *handle;
- stream *s;
- CURLcode ret;
char errbuf[CURL_ERROR_SIZE];
-
- s = buffer_wastream(NULL, url);
- if (s == NULL) {
- return NULL;
- }
-
- if ((handle = curl_easy_init()) == NULL) {
- mnstr_destroy(s);
- return NULL;
- }
-
- errbuf[0] = 0;
-
- if ((ret = curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, errbuf)) !=
CURLE_OK ||
- (ret = curl_easy_setopt(handle, CURLOPT_URL, url)) != CURLE_OK ||
- (ret = curl_easy_setopt(handle, CURLOPT_WRITEDATA, s)) != CURLE_OK
||
- (ret = curl_easy_setopt(handle, CURLOPT_VERBOSE, 0)) != CURLE_OK ||
- (ret = curl_easy_setopt(handle, CURLOPT_NOSIGNAL, 1)) != CURLE_OK ||
- (ret = curl_easy_setopt(handle, CURLOPT_FAILONERROR, 1)) !=
CURLE_OK ||
- (ret = curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION,
write_callback)) != CURLE_OK ||
- (ret = curl_easy_perform(handle)) != CURLE_OK) {
- curl_easy_cleanup(handle);
- mnstr_destroy(s);
- if (errbuf[0])
- fprintf(stderr, "%s\n", errbuf);
- else
- fprintf(stderr, "%s\n", curl_easy_strerror(ret));
- return NULL;
- }
- curl_easy_cleanup(handle);
- (void) mnstr_get_buffer(s); /* switch to read-only */
+ stream *s = open_urlstream(url, errbuf);
+ if (s == NULL)
+ fprintf(stderr, "%s\n", errbuf);
return s;
}
#else
static stream *
-open_urlstream(const char *url)
+opener_urlstream(char *url)
{
(void) url;
return NULL;
@@ -506,13 +458,6 @@ open_urlstream(const char *url)
#endif
static stream *
-opener_urlstream(char *url)
-{
- stream *s = open_urlstream(url);
- return s;
-}
-
-static stream *
opener_wstream(char *filename)
{
stream *s = open_wstream(filename);
@@ -528,6 +473,40 @@ opener_wastream(char *filename)
}
+#ifdef HAVE_ICONV
+#include "iconv-stream.h"
+#else
+static stream *
+iconv_rstream(stream *restrict ss, const char *restrict charset, const char
*restrict name)
+{
+ if (ss == NULL || charset == NULL || name == NULL)
+ return NULL;
+ if (ss->isutf8 ||
+ strcmp(charset, "utf-8") == 0 ||
+ strcmp(charset, "UTF-8") == 0 ||
+ strcmp(charset, "UTF8") == 0)
+ return ss;
+
+ fprintf(stderr, "ICONV support has been left out of this MonetDB");
+ return NULL;
+}
+
+static stream *
+iconv_wstream(stream *restrict ss, const char *restrict charset, const char
*restrict name)
+{
+ if (ss == NULL || charset == NULL || name == NULL)
+ return NULL;
+ if (ss->isutf8 ||
+ strcmp(charset, "utf-8") == 0 ||
+ strcmp(charset, "UTF-8") == 0 ||
+ strcmp(charset, "UTF8") == 0)
+ return ss;
+
+ fprintf(stderr, "ICONV support has been left out of this MonetDB");
+ return NULL;
+}
+#endif
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]