Changeset: 89779df10004 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=89779df10004 Modified Files: sql/server/sql_scan.c Branch: json Log Message:
Add new quotation mode for easier json debugging diffs (39 lines): diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c --- a/sql/server/sql_scan.c +++ b/sql/server/sql_scan.c @@ -1160,6 +1160,11 @@ tokenize(mvc * c, int cur) lc->rs->buf[lc->rs->pos + lc->yycur] == '\'') { return scanner_string(c, scanner_getc(lc), true); } + if ((cur == 'J' || cur == 'j') && + lc->rs->buf[lc->rs->pos + lc->yycur] == '\'') { + return scanner_string(c, scanner_getc(lc), false); + } + if ((cur == 'U' || cur == 'u') && lc->rs->buf[lc->rs->pos + lc->yycur] == '&' && (lc->rs->buf[lc->rs->pos + lc->yycur + 1] == '\'' || @@ -1252,7 +1257,7 @@ sql_get_next_token(YYSTYPE *yylval, void else if (token == STRING) { char quote = *yylval->sval; char *str = sa_alloc( c->sa, (lc->yycur-lc->yysval-2)*2 + 1 ); - assert(quote == '"' || quote == '\'' || quote == 'E' || quote == 'e' || quote == 'U' || quote == 'u' || quote == 'X' || quote == 'x'); + assert(quote == '"' || quote == '\'' || quote == 'E' || quote == 'e' || quote == 'U' || quote == 'u' || quote == 'X' || quote == 'x' || quote == 'J' || quote == 'j'); lc->rs->buf[lc->rs->pos + lc->yycur - 1] = 0; if (quote == '"') { @@ -1283,6 +1288,14 @@ sql_get_next_token(YYSTYPE *yylval, void *dst = 0; quote = '\''; token = XSTRING; + } else if (quote == 'J' || quote == 'j') { + assert(yylval->sval[1] == '\''); + char *dst = str; + for (char *src = yylval->sval + 2; *src; dst++) + if ((*dst = *src++) == '\'' && *src == '\'') + src++; + quote = '\''; + *dst = 0; } else { #if 0 char *dst = str; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list