Changeset: a7ebdda88223 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a7ebdda88223
Modified Files:
        sql/backends/monet5/sql_result.c
Branch: protocol
Log Message:

Allow maximum fixed-width trasfer for varchar to be specified through command 
line and fix for varint string prefix.


diffs (52 lines):

diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c
--- a/sql/backends/monet5/sql_result.c
+++ b/sql/backends/monet5/sql_result.c
@@ -1875,9 +1875,6 @@ static int write_str_term(stream* s, str
 #include <mhapi.h>
 #endif
 
-#define VARCHAR_MAXIMUM_FIXED 3
-
-
 static int mvc_export_resultset_prot10(res_table* t, stream* s, stream *c, 
size_t bsize) {
        BAT *order;
        lng count;
@@ -1891,6 +1888,16 @@ static int mvc_export_resultset_prot10(r
        int fres = 0;
        column_compression colcomp = bs2_colcomp(s);
 
+       int VARCHAR_MAXIMUM_FIXED = 0;
+       if (GDKgetenv("varchar_maximum_fixed") != NULL) {
+               str baseptr = GDKgetenv("varchar_maximum_fixed");
+               str endptr;
+               VARCHAR_MAXIMUM_FIXED = strtol(baseptr, &endptr, 0);
+               if (baseptr == endptr) {
+                       VARCHAR_MAXIMUM_FIXED = 0;
+                       errno = 0;
+               }
+       }
 
        iterators = GDKzalloc(sizeof(BATiter) * t->nr_cols);
 
@@ -2238,18 +2245,9 @@ static int mvc_export_resultset_prot10(r
 #ifndef VARINT_PADDING
                                                buf = stpcpy(buf, str) + 1;
 #else
-                                               if (c->type.digits > 0) {
-                                                       char *endbuf;
-                                                       varsize = 
varint_size(c->type.digits);
-                                                       endbuf = stpcpy(buf + 
varsize, str);
-                                                       write_varint(buf, 
endbuf - (buf + varsize));
-                                                       
assert(read_varint_value(buf) == strlen(str));
-                                                       buf = endbuf;
-                                               } else {
-                                                       varsize = 
write_varint(buf, strlen(str));
-                                                       buf = stpcpy(buf + 
varsize, str);
-                                               }
- #endif
+                                               varsize = write_varint(buf, 
strlen(str));
+                                               buf = stpcpy(buf + varsize, 
str);
+#endif
                                        }
                                        // after the loop we know the size of 
the column, so write it
                                        *((lng*)startbuf) = buf - (startbuf + 
sizeof(lng));
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to