Changeset: 5718352f009a for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5718352f009a Added Files: monetdb5/modules/mal/Tests/run monetdb5/optimizer/Tests/run sql/benchmarks/tpch/fileleak/Tests/All sql/benchmarks/tpch/fileleak/Tests/check0.reqtests sql/benchmarks/tpch/fileleak/Tests/check0.sql sql/benchmarks/tpch/fileleak/Tests/check0.stable.err sql/benchmarks/tpch/fileleak/Tests/check0.stable.out sql/benchmarks/tpch/fileleak/Tests/check1.reqtests sql/benchmarks/tpch/fileleak/Tests/check1.sql sql/benchmarks/tpch/fileleak/Tests/check1.stable.err sql/benchmarks/tpch/fileleak/Tests/check1.stable.out sql/benchmarks/tpch/fileleak/Tests/create.sql.src sql/benchmarks/tpch/fileleak/Tests/create.stable.err sql/benchmarks/tpch/fileleak/Tests/create.stable.out sql/benchmarks/tpch/fileleak/Tests/delete_all.SQL.py sql/benchmarks/tpch/fileleak/Tests/delete_all.stable.err sql/benchmarks/tpch/fileleak/Tests/delete_all.stable.out sql/benchmarks/tpch/fileleak/Tests/leaks.SQL.py sql/benchmarks/tpch/fileleak/Tests/leaks.stable.err sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out sql/benchmarks/tpch/fileleak/Tests/load.SQL.py sql/benchmarks/tpch/fileleak/Tests/load.reqtests sql/benchmarks/tpch/fileleak/Tests/load.stable.err sql/benchmarks/tpch/fileleak/Tests/load.stable.out sql/benchmarks/tpch/fileleak/Tests/test.py sql/benchmarks/tpch/fileleak/Tests/test.sql sql/benchmarks/tpch/trace.sql sql/test/BugTracker-2012/Tests/huge_insert.Bug-2803.sql sql/test/BugTracker-2013/Tests/binary_copy_into.Bug-3345.SQL.py sql/test/BugTracker-2013/Tests/binary_copy_into.Bug-3345.stable.err sql/test/BugTracker-2013/Tests/binary_copy_into.Bug-3345.stable.out sql/test/BugTracker-2013/Tests/copy-into-compressed.Bug-3351.sql.in sql/test/BugTracker-2013/Tests/copy-into-compressed.Bug-3351.stable.err sql/test/BugTracker-2013/Tests/copy-into-compressed.Bug-3351.stable.out sql/test/BugTracker-2013/Tests/correlated_subquery.Bug-3317.sql sql/test/BugTracker-2013/Tests/correlated_subquery.Bug-3317.stable.err sql/test/BugTracker-2013/Tests/correlated_subquery.Bug-3317.stable.out sql/test/BugTracker-2013/Tests/duplicate_column_name.Bug-3349.sql sql/test/BugTracker-2013/Tests/duplicate_column_name.Bug-3349.stable.err sql/test/BugTracker-2013/Tests/duplicate_column_name.Bug-3349.stable.out sql/test/BugTracker-2013/Tests/iso8601_weekofyear.Bug-3232.sql sql/test/BugTracker-2013/Tests/iso8601_weekofyear.Bug-3232.stable.err sql/test/BugTracker-2013/Tests/iso8601_weekofyear.Bug-3232.stable.out sql/test/BugTracker-2013/Tests/like_pcre_or.Bug-3348.sql sql/test/BugTracker-2013/Tests/like_pcre_or.Bug-3348.stable.err sql/test/BugTracker-2013/Tests/like_pcre_or.Bug-3348.stable.out sql/test/BugTracker-2013/Tests/median.Bug-3352.sql sql/test/BugTracker-2013/Tests/median.Bug-3352.stable.err sql/test/BugTracker-2013/Tests/median.Bug-3352.stable.out sql/test/BugTracker-2013/Tests/n_nationkey.sorted sql/test/BugTracker-2013/Tests/n_regionkey.sorted sql/test/BugTracker-2013/Tests/nestedcalls.stable.err sql/test/BugTracker-2013/Tests/nestedcalls.stable.out sql/test/BugTracker-2013/Tests/test3351.csv sql/test/BugTracker-2013/Tests/test3351.csv.bz2 sql/test/BugTracker-2013/Tests/test3351.csv.gz Modified Files: HowToStart.rst clients/Tests/exports.stable.out clients/mapiclient/mclient.c clients/mapiclient/tomograph.c clients/odbc/driver/ODBCConvert.c clients/odbc/driver/ODBCGlobal.h clients/odbc/driver/ODBCUtil.c clients/odbc/driver/ODBCUtil.h clients/odbc/driver/SQLBindParameter.c clients/odbc/driver/SQLBrowseConnect.c clients/odbc/driver/SQLColAttribute.c clients/odbc/driver/SQLColAttributes.c clients/odbc/driver/SQLColumnPrivileges.c clients/odbc/driver/SQLColumns.c clients/odbc/driver/SQLConnect.c clients/odbc/driver/SQLDataSources.c clients/odbc/driver/SQLDescribeCol.c clients/odbc/driver/SQLDriverConnect.c clients/odbc/driver/SQLDrivers.c clients/odbc/driver/SQLError.c clients/odbc/driver/SQLExecDirect.c clients/odbc/driver/SQLExecute.c clients/odbc/driver/SQLForeignKeys.c clients/odbc/driver/SQLGetConnectAttr.c clients/odbc/driver/SQLGetConnectOption.c clients/odbc/driver/SQLGetCursorName.c clients/odbc/driver/SQLGetDescField.c clients/odbc/driver/SQLGetDescRec.c clients/odbc/driver/SQLGetDiagField.c clients/odbc/driver/SQLGetDiagRec.c clients/odbc/driver/SQLGetInfo.c clients/odbc/driver/SQLGetStmtAttr.c clients/odbc/driver/SQLGetTypeInfo.c clients/odbc/driver/SQLNativeSql.c clients/odbc/driver/SQLPrepare.c clients/odbc/driver/SQLPrimaryKeys.c clients/odbc/driver/SQLProcedureColumns.c clients/odbc/driver/SQLProcedures.c clients/odbc/driver/SQLSetConnectAttr.c clients/odbc/driver/SQLSetConnectOption.c clients/odbc/driver/SQLSetCursorName.c clients/odbc/driver/SQLSetDescField.c clients/odbc/driver/SQLSetStmtAttr.c clients/odbc/driver/SQLSpecialColumns.c clients/odbc/driver/SQLStatistics.c clients/odbc/driver/SQLTablePrivileges.c clients/odbc/driver/SQLTables.c common/stream/stream.c common/stream/stream.h gdk/gdk.h gdk/gdk_heap.c gdk/gdk_join.c gdk/gdk_storage.c monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.err monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out monetdb5/mal/Tests/tst1200.mal monetdb5/mal/Tests/tst1200.stable.out monetdb5/mal/Tests/tst1201.mal monetdb5/mal/Tests/tst1201.stable.out monetdb5/mal/Tests/tst1202.mal monetdb5/mal/Tests/tst1202.stable.out monetdb5/mal/Tests/tst1205.mal monetdb5/mal/Tests/tst1205.stable.out monetdb5/mal/mal_dataflow.c monetdb5/mal/mal_dataflow.h monetdb5/mal/mal_instruction.c monetdb5/mal/mal_instruction.h monetdb5/mal/mal_recycle.c monetdb5/modules/atoms/mtime.c monetdb5/modules/atoms/mtime.h monetdb5/modules/atoms/mtime.mal monetdb5/modules/kernel/algebra.c monetdb5/modules/kernel/algebra.h monetdb5/modules/kernel/algebra.mal monetdb5/modules/mal/language.c monetdb5/modules/mal/language.h monetdb5/modules/mal/pcre.c monetdb5/modules/mal/tablet.c monetdb5/modules/mal/tablet.h monetdb5/optimizer/opt_reduce.c sql/backends/monet5/UDF/Tests/udf-fuse.stable.out sql/backends/monet5/UDF/Tests/udf-reverse.stable.out sql/backends/monet5/datacell/receptor.c sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.mx sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_optimizer.c sql/backends/monet5/sql_optimizer.h sql/backends/monet5/sql_result.c sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_statement.c sql/backends/monet5/sql_statement.h sql/common/sql_hash.c sql/common/sql_list.c sql/common/sql_types.c sql/include/sql_catalog.h sql/include/sql_list.h sql/scripts/mtime.sql sql/server/rel_exp.c sql/server/rel_optimizer.c sql/server/rel_psm.c sql/server/rel_select.c sql/server/rel_semantic.c sql/server/rel_updates.c sql/server/sql_parser.h sql/server/sql_parser.y sql/server/sql_scan.c sql/storage/store.c sql/test/BugTracker-2009/Tests/POWER_vs_prod.SF-2596114.stable.out sql/test/BugTracker-2009/Tests/ambiguous_order_by.SF-2827916.stable.err sql/test/BugTracker-2009/Tests/ambiguous_view.stable.err sql/test/BugTracker-2009/Tests/assert_in_update.SF-2807336.stable.err sql/test/BugTracker-2009/Tests/copy_into_error_off_by_one.SF-2833696.stable.err sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.err sql/test/BugTracker-2009/Tests/create_on_ro_db_crash.SF-2830238.stable.err sql/test/BugTracker-2009/Tests/create_table_dup_name.SF-2879005.stable.err sql/test/BugTracker-2009/Tests/drop-sequence-crash.SF-2854195.stable.err sql/test/BugTracker-2009/Tests/except_error_wrong.SF-2808409.stable.err sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.err sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.out sql/test/BugTracker-2009/Tests/incomplete.SF.2536893.stable.err sql/test/BugTracker-2009/Tests/insert_into_values_bug.SF-2807609.stable.err sql/test/BugTracker-2009/Tests/limit_in_subquery.SF-2620437.stable.err sql/test/BugTracker-2009/Tests/not_invalidtable_crash.SF-2927174.stable.err sql/test/BugTracker-2009/Tests/overflow.SF-2853458.stable.err sql/test/BugTracker-2009/Tests/primekeyconstraint.SF-2783425.stable.err sql/test/BugTracker-2009/Tests/rollback_bug.stable.err sql/test/BugTracker-2009/Tests/rollback_mistake.SF-2814622.stable.err sql/test/BugTracker-2009/Tests/segv_for_unknown_identifier_in_subquery.SF-2874045.stable.err sql/test/BugTracker-2009/Tests/select_X_where_bla_EQ_whatever.SF-282597.stable.err sql/test/BugTracker-2009/Tests/select_from_history.SF-2556566.stable.err sql/test/BugTracker-2009/Tests/subquery_returns_table_crash.SF-2513620.stable.err sql/test/BugTracker-2009/Tests/temp_table_fail_leaves_data.SF-2793286.stable.err sql/test/BugTracker-2009/Tests/temporary_table_leftover.SF-2734713.stable.err sql/test/BugTracker-2009/Tests/unique_constraint_on_char.SF-2873564.stable.err sql/test/BugTracker-2009/Tests/wrong_error_message.SF-2637051.stable.err sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out sql/test/BugTracker-2010/Tests/TypeException_with_missing_function.Bug-2674.stable.err sql/test/BugTracker-2010/Tests/call_function_without_warning.Bug-2752.stable.err sql/test/BugTracker-2010/Tests/copy-into-too-long-string.Bug-2358.stable.err sql/test/BugTracker-2010/Tests/crash_default_unlocked.Bug-2744.stable.err sql/test/BugTracker-2010/Tests/crash_on_in_2.Bug-2604.stable.err sql/test/BugTracker-2010/Tests/crashonschema.Bug-2547.stable.err sql/test/BugTracker-2010/Tests/duplicate-key.Bug-2667.stable.err sql/test/BugTracker-2010/Tests/error-truncated.Bug-2615.stable.err sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out sql/test/BugTracker-2010/Tests/incomplete-utf8-sequence.Bug-2575.stable.err sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.err sql/test/BugTracker-2010/Tests/second_function_existing_signature.Bug-2611.stable.err sql/test/BugTracker-2010/Tests/select_from_seq.Bug-2730.stable.err sql/test/BugTracker-2010/Tests/select_star.Bug-2563.stable.err sql/test/BugTracker-2010/Tests/sequence-restart-with-null.Bug-2648.stable.err sql/test/BugTracker-2010/Tests/subselect.Bug-2537.stable.err sql/test/BugTracker-2010/Tests/sum_on_date_crash.Bug-2643.stable.err sql/test/BugTracker-2010/Tests/times-crash.Bug-2586.stable.err sql/test/BugTracker-2010/Tests/wrong_error_message_dropping_view.Bug-2713.stable.err sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.err sql/test/BugTracker-2012/Tests/null_except_null.Bug-3040.stable.out sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.stable.err sql/test/BugTracker-2013/Tests/All sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out sql/test/BugTracker-2013/Tests/qualified_aggrname.Bug-3332.stable.out sql/test/BugTracker/Tests/explain.SF-1739353.stable.out sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out sql/test/BugTracker/Tests/set_sql_debug_64__breaking_the_DB.SF-1906287.stable.out sql/test/Dependencies/Tests/Dependencies.stable.out sql/test/leaks/Tests/check1.stable.out sql/test/leaks/Tests/check2.stable.out sql/test/leaks/Tests/check3.stable.out sql/test/leaks/Tests/check4.stable.out sql/test/leaks/Tests/check5.stable.out sql/test/mapi/Tests/php_monetdb.stable.out Branch: mutation Log Message:
Merge with default diffs (truncated from 22487 to 300 lines): diff --git a/HowToStart.rst b/HowToStart.rst --- a/HowToStart.rst +++ b/HowToStart.rst @@ -73,6 +73,19 @@ autoconf/automake/libtool Make_ phase. autoconf and automake are not needed when you start with the source distribution. +iconv + A macrofile `iconv.m4` is expected in `/usr/share/aclocal/`. + On Ubuntu, you can search with `apt-file` what provides these + files: + + $ apt-file search iconv.m4 + gettext: /usr/share/aclocal/iconv.m4 + gnulib: /usr/share/gnulib/m4/iconv.m4 + + The .m4 that usually works is in gettext. Simply run, + + $ sudo apt-get install gettext + standard software development tools To compile MonetDB, you also need to have the following standard software development tools installed and ready for 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 @@ -196,14 +196,14 @@ BAT *BATsort_rev(BAT *b); BAT *BATssort(BAT *b); BAT *BATssort_rev(BAT *b); gdk_return BATsubcross(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr); -gdk_return BATsubjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, BUN estimate); -gdk_return BATsubleftfetchjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, BUN estimate); -gdk_return BATsubleftjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, BUN estimate); -gdk_return BATsubouterjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, BUN estimate); +gdk_return BATsubjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, int nil_matches, BUN estimate); +gdk_return BATsubleftfetchjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, int nil_matches, BUN estimate); +gdk_return BATsubleftjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, int nil_matches, BUN estimate); +gdk_return BATsubouterjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, int nil_matches, BUN estimate); BAT *BATsubselect(BAT *b, BAT *s, const void *tl, const void *th, int li, int hi, int anti); -gdk_return BATsubsemijoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, BUN estimate); +gdk_return BATsubsemijoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, int nil_matches, BUN estimate); gdk_return BATsubsort(BAT **sorted, BAT **order, BAT **groups, BAT *b, BAT *o, BAT *g, int reverse, int stable); -gdk_return BATsubthetajoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, const char *op, BUN estimate); +gdk_return BATsubthetajoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, const char *op, int nil_matches, BUN estimate); gdk_return BATsum(void *res, int tp, BAT *b, BAT *s, int skip_nils, int abort_on_error, int nil_if_empty); BAT *BATsunion(BAT *b, BAT *c); BAT *BATsunique(BAT *b); @@ -813,9 +813,9 @@ str ALGssort(int *result, int *bid); str ALGssort_rev(int *result, int *bid); str ALGstdev(dbl *res, int *bid); str ALGstdevp(dbl *res, int *bid); -str ALGsubjoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, lng *estimate); -str ALGsubleftjoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, lng *estimate); -str ALGsubouterjoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, lng *estimate); +str ALGsubjoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, bit *nil_matches, lng *estimate); +str ALGsubleftjoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, bit *nil_matches, lng *estimate); +str ALGsubouterjoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, bit *nil_matches, lng *estimate); str ALGsubsample(int *result, int *bid, int *param); str ALGsubselect1(bat *result, bat *bid, const void *low, const void *high, const bit *li, const bit *hi, const bit *anti); str ALGsubselect2(bat *result, bat *bid, bat *sid, const void *low, const void *high, const bit *li, const bit *hi, const bit *anti); @@ -829,7 +829,7 @@ str ALGsubsort23(bat *result, bat *norde str ALGsubsort31(bat *result, bat *bid, bat *order, bat *group, bit *reverse, bit *stable); str ALGsubsort32(bat *result, bat *norder, bat *bid, bat *order, bat *group, bit *reverse, bit *stable); str ALGsubsort33(bat *result, bat *norder, bat *ngroup, bat *bid, bat *order, bat *group, bit *reverse, bit *stable); -str ALGsubthetajoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, str *op, lng *estimate); +str ALGsubthetajoin(bat *r1, bat *r2, bat *l, bat *r, bat *sl, bat *sr, str *op, bit *nil_matches, lng *estimate); str ALGsunion(int *result, int *lid, int *rid); str ALGsunique(int *result, int *bid); str ALGtdiff(int *result, int *lid, int *rid); @@ -2605,7 +2605,6 @@ int hasCommonResults(InstrPtr p, InstrPt int hasSameArguments(MalBlkPtr mb, InstrPtr p, InstrPtr q); int hasSameSignature(MalBlkPtr mb, InstrPtr p, InstrPtr q, int stop); int hasSideEffects(InstrPtr p, int strict); -int has_whitespace(char *sep); str hashRef; int headProp; str histogramRef; @@ -2633,7 +2632,6 @@ void insertInstruction(MalBlkPtr mb, Ins str insertRef; void insertSymbol(Module scope, Symbol prg); void insertToBox(Box box, str name, str val); -int insert_line(Tablet *as, char *line, ptr key, BUN col1, BUN col2); int insertionsProp; int instrFilter(InstrPtr pci, str mod, str fcn); str instruction2str(MalBlkPtr mb, MalStkPtr stl, InstrPtr p, int hidden); @@ -2868,7 +2866,6 @@ void optimizerDebug(Client cntxt, MalBlk void optimizerInit(void); str optimizerRef; str optimizer_prelude(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int output_file_dense(Tablet *as, stream *fd); str pack2Ref; str packRef; str parseError(Client cntxt, str msg); @@ -3170,9 +3167,7 @@ str zero_or_oneRef; # stream stream *append_wastream(const char *filename); stream *append_wstream(const char *filename); -stream *attach_teestream(stream *orig, stream *log); stream *block_stream(stream *s); -ssize_t bs_read_next(stream *s, void *buf, size_t nbytes, int *last); bstream *bstream_create(stream *rs, size_t chunk_size); void bstream_destroy(bstream *s); ssize_t bstream_next(bstream *s); @@ -3184,8 +3179,6 @@ void buffer_init(buffer *b, char *buf, s stream *buffer_rastream(buffer *b, const char *name); stream *buffer_wastream(buffer *b, const char *name); void close_stream(stream *s); -void detach_teestream(stream *ts); -stream *dupFileStream(stream *s); stream *file_rastream(FILE *fp, const char *name); stream *file_rstream(FILE *fp, const char *name); stream *file_wastream(FILE *fp, const char *name); diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -2562,6 +2562,7 @@ set_timezone(Mapi mid) tmp = gmtime(&t); gt = mktime(tmp); tmp = localtime(&t); + tmp->tm_isdst=0; /* We need the difference without dst */ lt = mktime(tmp); assert((lng) gt - (lng) lt >= (lng) INT_MIN && (lng) gt - (lng) lt <= (lng) INT_MAX); tzone = (int) (gt - lt); diff --git a/clients/mapiclient/tomograph.c b/clients/mapiclient/tomograph.c --- a/clients/mapiclient/tomograph.c +++ b/clients/mapiclient/tomograph.c @@ -1144,7 +1144,7 @@ static void showcolormap(char *filename, * "*.*" stays first (colors[0]) */ _clrs_ = (Color*) malloc (sizeof(colors)); if (_clrs_) { - *_clrs_ = *colors; + memcpy (_clrs_, colors, sizeof(colors)); qsort (_clrs_, NUM_COLORS, sizeof(Color), cmp_clr); clrs = _clrs_; } diff --git a/clients/odbc/driver/ODBCConvert.c b/clients/odbc/driver/ODBCConvert.c --- a/clients/odbc/driver/ODBCConvert.c +++ b/clients/odbc/driver/ODBCConvert.c @@ -397,13 +397,12 @@ ODBCDefaultType(ODBCDescRec *rec) case SQL_LONGVARCHAR: case SQL_DECIMAL: case SQL_NUMERIC: + case SQL_GUID: return SQL_C_CHAR; -#ifdef WITH_WCHAR case SQL_WCHAR: case SQL_WVARCHAR: case SQL_WLONGVARCHAR: return SQL_C_WCHAR; -#endif case SQL_BIT: return SQL_C_BIT; case SQL_TINYINT: @@ -455,8 +454,6 @@ ODBCDefaultType(ODBCDescRec *rec) return SQL_C_INTERVAL_HOUR_TO_SECOND; case SQL_INTERVAL_MINUTE_TO_SECOND: return SQL_C_INTERVAL_MINUTE_TO_SECOND; - case SQL_GUID: - return SQL_C_GUID; } return 0; } @@ -1093,8 +1090,6 @@ ODBCFetch(ODBCStmt *stmt, /* see SQLExecute.c for possible types */ switch (sql_type) { - case SQL_CHAR: - break; case SQL_DECIMAL: case SQL_TINYINT: case SQL_SMALLINT: @@ -1215,9 +1210,7 @@ ODBCFetch(ODBCStmt *stmt, switch (type) { case SQL_C_CHAR: -#ifdef WITH_WCHAR case SQL_C_WCHAR: -#endif { SQLPOINTER origptr; SQLLEN origbuflen; @@ -1237,20 +1230,21 @@ ODBCFetch(ODBCStmt *stmt, origbuflen = buflen; origlenp = lenp; -#ifdef WITH_WCHAR if (type == SQL_C_WCHAR) { /* allocate temporary space */ buflen = 511; /* should be enough for most types */ if (data != NULL && (sql_type == SQL_CHAR || sql_type == SQL_VARCHAR || - sql_type == SQL_LONGVARCHAR)) + sql_type == SQL_LONGVARCHAR || + sql_type == SQL_WCHAR || + sql_type == SQL_WVARCHAR || + sql_type == SQL_WLONGVARCHAR)) buflen = (SQLLEN) datalen + 1; /* but this is certainly enough for strings */ ptr = malloc(buflen); lenp = NULL; } -#endif switch (sql_type) { SQLLEN sz; @@ -1258,6 +1252,9 @@ ODBCFetch(ODBCStmt *stmt, case SQL_CHAR: case SQL_VARCHAR: case SQL_LONGVARCHAR: + case SQL_WCHAR: + case SQL_WVARCHAR: + case SQL_WLONGVARCHAR: copyString(data, datalen, ptr, buflen, lenp, SQLLEN, addStmtError, stmt, return SQL_ERROR); break; case SQL_BINARY: @@ -1272,10 +1269,8 @@ ODBCFetch(ODBCStmt *stmt, if (buflen < 0) { /* Invalid string or buffer length */ addStmtError(stmt, "HY090", NULL, 0); -#ifdef WITH_WCHAR if (type == SQL_C_WCHAR) free(ptr); -#endif return SQL_ERROR; } for (k = 0; k < datalen; k++) { @@ -1289,10 +1284,8 @@ ODBCFetch(ODBCStmt *stmt, /* should not happen */ /* General error */ addStmtError(stmt, "HY000", "Unexpected data from server", 0); -#ifdef WITH_WCHAR if (type == SQL_C_WCHAR) free(ptr); -#endif return SQL_ERROR; } if (k & 1) { @@ -1324,10 +1317,8 @@ ODBCFetch(ODBCStmt *stmt, /* Numeric value out of range */ addStmtError(stmt, "22003", NULL, 0); -#ifdef WITH_WCHAR if (type == SQL_C_WCHAR) free(ptr); -#endif return SQL_ERROR; } if (lenp) @@ -1360,10 +1351,8 @@ ODBCFetch(ODBCStmt *stmt, * of range */ addStmtError(stmt, "22003", NULL, 0); -#ifdef WITH_WCHAR if (type == SQL_C_WCHAR) free(ptr); -#endif return SQL_ERROR; } /* current precision (i) doesn't fit, @@ -1388,10 +1377,8 @@ ODBCFetch(ODBCStmt *stmt, /* Numeric value out of range */ addStmtError(stmt, "22003", NULL, 0); -#ifdef WITH_WCHAR if (type == SQL_C_WCHAR) free(ptr); -#endif return SQL_ERROR; } data = (char *) ptr; @@ -1413,10 +1400,8 @@ ODBCFetch(ODBCStmt *stmt, /* Numeric value out of range */ addStmtError(stmt, "22003", NULL, 0); -#ifdef WITH_WCHAR if (type == SQL_C_WCHAR) free(ptr); -#endif return SQL_ERROR; } data = (char *) ptr; @@ -1448,10 +1433,8 @@ ODBCFetch(ODBCStmt *stmt, /* Numeric value out of range */ addStmtError(stmt, "22003", NULL, 0); -#ifdef WITH_WCHAR if (type == SQL_C_WCHAR) free(ptr); -#endif return SQL_ERROR; } if (lenp) @@ -1487,10 +1470,8 @@ ODBCFetch(ODBCStmt *stmt, /* Numeric value out of range */ addStmtError(stmt, "22003", NULL, 0); -#ifdef WITH_WCHAR if (type == SQL_C_WCHAR) free(ptr); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list