Changeset: 438d8ca5c7cb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=438d8ca5c7cb
Modified Files:
        clients/Tests/exports.stable.out
        clients/mapilib/mapi.c
        clients/mapilib/mapi.h
        clients/odbc/driver/ODBCStmt.h
        clients/odbc/driver/SQLExecDirect.c
        clients/odbc/driver/SQLExecute.c
        clients/odbc/driver/SQLPrepare.c
        geom/BugTracker/Tests/X_crash.SF-1971632.stable.err
        geom/BugTracker/Tests/copy_into_crash.SF-1975402.stable.err
        geom/sql/functions/Tests/ST_GeomFromText.stable.err
        geom/sql/functions/Tests/ST_LineFromText.stable.err
        geom/sql/functions/Tests/ST_MLineFromText.stable.err
        geom/sql/functions/Tests/ST_MPointFromText.stable.err
        geom/sql/functions/Tests/ST_MPolygonFromText.stable.err
        geom/sql/functions/Tests/ST_MakeBox2D.stable.err
        geom/sql/functions/Tests/ST_MakePoint.stable.err
        geom/sql/functions/Tests/ST_NumPoints.stable.err
        geom/sql/functions/Tests/ST_PointFromText.stable.err
        geom/sql/functions/Tests/ST_PolygonFromText.stable.err
        geom/sql/functions/Tests/XYZ.stable.err
        monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.err
        monetdb5/mal/mal_exception.c
        monetdb5/mal/mal_exception.h
        monetdb5/modules/mal/mal_mapi.c
        sql/backends/monet5/Tests/createorreplace.stable.err
        sql/backends/monet5/Tests/optimizers.stable.err
        sql/backends/monet5/Tests/optimizers.stable.out
        sql/backends/monet5/generator/Tests/crash.Bug-3609.stable.err
        sql/backends/monet5/generator/Tests/generator01.stable.err
        sql/backends/monet5/generator/Tests/generator04.stable.err
        sql/backends/monet5/vaults/bam/Tests/bam_lib.stable.err
        sql/backends/monet5/vaults/bam/Tests/mergetable.stable.err
        sql/backends/monet5/vaults/bam/Tests/verify_load.stable.err
        sql/benchmarks/nobench/Tests/nobench.stable.err
        sql/test/ADT2006/Tests/sander.stable.err
        sql/test/BugConstraints/Tests/add_constraint_1643522.stable.err
        sql/test/BugConstraints/Tests/delete_primarykey_1643845.stable.err
        sql/test/BugConstraints/Tests/drop_column_1643542.stable.err
        sql/test/BugConstraints/Tests/update_primarykey_1643375.stable.err
        sql/test/BugDay_2005-10-06_2.8/Tests/double_commit.SF-916584.stable.err
        sql/test/BugDay_2005-10-06_2.8/Tests/mixed_type.SF-917372.stable.err
        
sql/test/BugDay_2005-10-06_2.8/Tests/string_truncate.SF-919542.stable.err
        sql/test/BugDay_2005-10-06_2.9.3/Tests/case.SF-929151.stable.err
        sql/test/BugDay_2005-10-06_2.9.3/Tests/div_by_zero.SF-987304.stable.err
        sql/test/BugDay_2005-10-06_2.9.3/Tests/having.SF-922614.stable.err
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/index_management.SF-927326.stable.err
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/inserts_with_defaults.SF-921977.stable.err
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/limit_in_create_view.SF-924448.stable.err
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/parser_crashes_server.SF-921996.stable.err
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/rollback_and_autocommit.SF-926453.stable.err
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/timestamp_parsing.SF-927300.stable.err
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/view_on_deleted_table.SF-938583.stable.err
        
sql/test/BugDay_2005-11-09_2.8/Tests/crash_with_wrong_nesting.SF-1097883.stable.err
        
sql/test/BugDay_2005-11-09_2.8/Tests/insert_from_no-existing_tables.SF-1037020.stable.err
        
sql/test/BugDay_2005-11-09_2.8/Tests/overflow_checking.SF-1089334.stable.err
        
sql/test/BugDay_2005-11-09_2.8/Tests/updating_views.SF-1023645.stable.err
        
sql/test/BugDay_2005-11-09_2.9.3/Tests/drop_column_alter_table.SF-1114557.stable.err
        
sql/test/BugDay_2005-11-09_2.9.3/Tests/grant_public.SF-1114580.stable.err
        
sql/test/BugDay_2005-11-09_2.9.3/Tests/hang_on_copy_into.SF-1100504.stable.err
        
sql/test/BugDay_2005-11-09_2.9.3/Tests/having_clause_quirks.SF-947601.stable.err
        
sql/test/BugDay_2005-11-09_2.9.3/Tests/history_table_escape.SF-1072089.stable.err
        
sql/test/BugDay_2005-11-09_2.9.3/Tests/integer_overflow.SF-1048671.stable.err
        
sql/test/BugDay_2005-11-09_2.9.3/Tests/interval_on_time_stamp.SF-1080488.stable.err
        
sql/test/BugDay_2005-11-09_2.9.3/Tests/schema_change_grant_crash.SF-963620.stable.err
        
sql/test/BugDay_2005-12-19_2.9.3/Tests/bogus_prepare.SF-1377079.stable.err
        
sql/test/BugDay_2005-12-19_2.9.3/Tests/crash_on_incorrect_SQL.SF-1314904.stable.err
        
sql/test/BugDay_2005-12-19_2.9.3/Tests/default_next_value_for_non_ex_seq.SF.1246631.stable.err
        
sql/test/BugDay_2005-12-19_2.9.3/Tests/prepare-where.SF-1238867.1238959.1238965.1240124.stable.err
        
sql/test/BugDay_2005-12-19_2.9.3/Tests/subselect_cardinality.SF-1240701.1242164.stable.err
        
sql/test/BugTracker-2008/Tests/alter_add_constraint_should_check_existing_data.SF-2075241.stable.err
        
sql/test/BugTracker-2008/Tests/alter_view_not_allowed.SF-2075195.stable.err
        sql/test/BugTracker-2008/Tests/copy-format.SF-2468513.stable.err
        
sql/test/BugTracker-2008/Tests/count_with_order_by_and_limit_crashes.SF-2229936.stable.err
        sql/test/BugTracker-2008/Tests/insert-null-byte.SF-2233581.stable.err
        
sql/test/BugTracker-2008/Tests/insert_into_unique_column.SF-2075180.stable.err
        
sql/test/BugTracker-2008/Tests/invalid_qualified_column_name.SF-2183288.stable.err
        
sql/test/BugTracker-2008/Tests/sql_command_kills_db.SF-2233677.stable.err
        
sql/test/BugTracker-2008/Tests/string_length_not_checked.SF-2075078.stable.err
        
sql/test/BugTracker-2008/Tests/too_many_nested_operators.SF-2102167.stable.err
        sql/test/BugTracker-2008/Tests/varchar.SF-2471371.stable.err
        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/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/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/constants-optimizer.Bug-2317.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/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/unicode-bom.Bug-2641.stable.err
        
sql/test/BugTracker-2010/Tests/wrong_error_message_dropping_view.Bug-2713.stable.err
        
sql/test/BugTracker-2011/Tests/UNIQUE_Constraint_reference.Bug-2835.stable.err
        
sql/test/BugTracker-2011/Tests/alter-table-set-read-only.bug-2906.stable.err
        
sql/test/BugTracker-2011/Tests/alter_incorrect_syntax_crash.Bug-2795.stable.err
        
sql/test/BugTracker-2011/Tests/multicolumn_constraints.Bug-2849.stable.err
        
sql/test/BugTracker-2011/Tests/user_create_temp_table.Bug-2916.stable.err
        sql/test/BugTracker-2012/Tests/create_function.Bug-3172.stable.err
        sql/test/BugTracker-2012/Tests/foreign_key.Bug-3114.stable.err
        sql/test/BugTracker-2012/Tests/interval_timestamp.Bug-3002.stable.err
        
sql/test/BugTracker-2012/Tests/large-number-operation-strange-results.Bug-2929.stable.err.int128
        
sql/test/BugTracker-2012/Tests/name_resolution_in_proc.Bug-3074.stable.err
        sql/test/BugTracker-2012/Tests/nested-select-crash.Bug-3009.stable.err
        sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err
        sql/test/BugTracker-2012/Tests/simple_select.Bug-2988.stable.err
        
sql/test/BugTracker-2012/Tests/table_function_with_column_subselects.Bug-3172.stable.err
        
sql/test/BugTracker-2012/Tests/table_returning_func_returns_too_many_columns.Bug-3077.stable.err
        sql/test/BugTracker-2012/Tests/timestamp_minus_date.Bug-2977.stable.err
        
sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.stable.err
        
sql/test/BugTracker-2013/Tests/avg_needs_abort_on_error.Bug-3329.stable.err
        sql/test/BugTracker-2013/Tests/binary_copy_into.Bug-3345.stable.err
        
sql/test/BugTracker-2013/Tests/cannot_use_columns_after_groupby.Bug-3340.stable.err
        sql/test/BugTracker-2013/Tests/duplicate_column_name.Bug-3349.stable.err
        sql/test/BugTracker-2013/Tests/env_errors.Bug-3370.stable.err
        
sql/test/BugTracker-2013/Tests/incorrect_subquery_delete.Bug-3315.stable.err
        sql/test/BugTracker-2013/Tests/pivot.Bug-3339.stable.err
        
sql/test/BugTracker-2013/Tests/psm_functions_and_accessrights.Bug-3300.stable.err
        sql/test/BugTracker-2013/Tests/syntaxerror.Bug-3399.stable.err
        sql/test/BugTracker-2013/Tests/timestamp.Bug-3401.stable.err
        
sql/test/BugTracker-2013/Tests/unique_constraint_on_declared_table.Bug-3319.stable.err
        
sql/test/BugTracker-2013/Tests/update_on_declared_table.Bug-3318.stable.err
        sql/test/BugTracker-2014/Tests/current_timestamp.Bug-3427.stable.err
        
sql/test/BugTracker-2014/Tests/duplicate_primary_keys.Bug-3474.stable.err
        
sql/test/BugTracker-2014/Tests/hexadecimal_literals.Bug-3621.stable.err.int128
        sql/test/BugTracker-2014/Tests/in_incorrect_multi.Bug-3462.stable.err
        sql/test/BugTracker-2014/Tests/integer-cast.Bug-3424.stable.err
        
sql/test/BugTracker-2014/Tests/nested_common_table_exp.Bug-3417.stable.err
        sql/test/BugTracker-2014/Tests/non_groupby_column.Bug-3524.stable.err
        sql/test/BugTracker-2014/Tests/number_4_4.Bug-3543.stable.err
        
sql/test/BugTracker-2014/Tests/order_by_incorrect_error.Bug-3630.stable.err
        sql/test/BugTracker-2014/Tests/queueError.Bug-3604.stable.err
        sql/test/BugTracker-2014/Tests/temporary.Bug-3430.stable.err
        sql/test/BugTracker-2014/Tests/too_general_errmsg.Bug-3605.stable.err
        sql/test/BugTracker-2015/Tests/adddrop_unknown_table.Bug-3718.stable.err
        
sql/test/BugTracker-2015/Tests/backslash_predecing_separator.Bug-3775.stable.err
        sql/test/BugTracker-2015/Tests/crash.Bug-3736.stable.err
        
sql/test/BugTracker-2015/Tests/create-temp-table-using-like.Bug-3767.stable.err
        sql/test/BugTracker-2015/Tests/duplicate-constraint.Bug-3820.stable.err
        sql/test/BugTracker-2015/Tests/float-space-parse.Bug-3691.stable.err
        sql/test/BugTracker-2015/Tests/inf-nan-handling.Bug-3696.stable.err
        
sql/test/BugTracker-2015/Tests/insert_into_merge_table_crash.Bug-3703.stable.err
        sql/test/BugTracker-2015/Tests/limit_too_large_value.Bug-3857.stable.err
        sql/test/BugTracker-2015/Tests/name_conflict.Bug-3650.stable.err
        sql/test/BugTracker-2015/Tests/negative_oid_crash.Bug-3667.stable.err
        sql/test/BugTracker-2015/Tests/readonly.Bug-3709.stable.err
        sql/test/BugTracker-2015/Tests/schema_view2.Bug-3766.stable.err
        sql/test/BugTracker-2015/Tests/ukey_check_unaligned.Bug-3669.stable.err
        sql/test/BugTracker-2015/Tests/with-columns-mismatch.Bug-3697.stable.err
        
sql/test/BugTracker-2016/Tests/RELEASE_SAVEPOINT_after_UPDATE_crash.Bug-4010.stable.err
        
sql/test/BugTracker-2016/Tests/catalog_name_qualifier.Bug-3948.stable.err
        
sql/test/BugTracker-2016/Tests/column_alias_in_where_clause.Bug-3947.stable.err
        sql/test/BugTracker-2016/Tests/column_name_conflict.Bug-3912.stable.err
        
sql/test/BugTracker-2016/Tests/convert-function-test-hge.Bug-3460.stable.err
        
sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.stable.err.int128
        
sql/test/BugTracker-2016/Tests/create_merge_table_withdata.Bug-4041.stable.err
        sql/test/BugTracker-2016/Tests/fk-smaller-pk.Bug-3983.stable.err
        sql/test/BugTracker-2016/Tests/foreign_key.Bug-3938.stable.err
        
sql/test/BugTracker-2016/Tests/groupby_on_column_expression.Bug-3832.stable.err
        
sql/test/BugTracker-2016/Tests/incorrect_column_name_in_OR_condition_of_LEFT-JOIN_crashes_mserver.Bug-3909.stable.err
        sql/test/BugTracker-2016/Tests/invalidcolumns.Bug-3968.stable.err
        sql/test/BugTracker-2016/Tests/isaUUID_function.Bug-3997.stable.err
        sql/test/BugTracker-2016/Tests/merge-table-edit.Bug-6084.stable.err
        sql/test/BugTracker-2016/Tests/stream_table_crash.Bug-3952.stable.err
        
sql/test/BugTracker-2016/Tests/timestamp_with_tz_fromstr.Bug-4019.stable.err
        
sql/test/BugTracker-2017/Tests/cast_boolean_to_string.Bug-6110.stable.err
        sql/test/BugTracker-2017/Tests/crash_in_in_handling.Bug-6260.stable.err
        sql/test/BugTracker-2017/Tests/default-insert-update.Bug-6249.stable.err
        
sql/test/BugTracker-2017/Tests/delete_from_merge_table.Bug-3743.stable.err
        sql/test/BugTracker-2017/Tests/drop_not_null_on_pkey.Bug-6189.stable.err
        sql/test/BugTracker-2017/Tests/incorrect_error.Bug-6141.stable.err
        sql/test/BugTracker-2017/Tests/lateral.Bug-6310.stable.err
        sql/test/BugTracker-2017/Tests/lateral02.Bug-6314.stable.err
        sql/test/BugTracker-2017/Tests/name-interference.Bug-6348.stable.err
        sql/test/BugTracker-2017/Tests/oidx-on-strings.Bug-6202.stable.err
        sql/test/BugTracker-2017/Tests/prepare.Bug-6133.stable.err
        sql/test/BugTracker-2017/Tests/push_subslice.Bug-6322.stable.err
        sql/test/BugTracker-2017/Tests/sqlsmith.Bug-6219.stable.err
        sql/test/BugTracker-2017/Tests/too-large-decimals.Bug-6192.stable.err
        
sql/test/BugTracker-2017/Tests/type-resolution-error.Bugs-6313.stable.err
        sql/test/BugTracker-2017/Tests/union_func_crash.Bug-6196.stable.err
        
sql/test/BugTracker-2017/Tests/unknown_col_in_order_by.Bug-3535.stable.err
        sql/test/BugTracker-2017/Tests/with-alias-bug.6246.stable.err
        
sql/test/BugTracker/Tests/alter_col_to_set_same_constraint.SF-1850781.stable.err
        sql/test/BugTracker/Tests/alter_table_add_fkey.SF-1737668.stable.err
        sql/test/BugTracker/Tests/alter_table_set_not_null.SF-1997030.stable.err
        sql/test/BugTracker/Tests/ambiguous_join.SF-1580565.stable.err
        sql/test/BugTracker/Tests/auto_increment.SF-1834820.stable.err
        sql/test/BugTracker/Tests/between_having_problem.SF-1959391.stable.err
        sql/test/BugTracker/Tests/between_with_column.SF-1959410.stable.err
        sql/test/BugTracker/Tests/bind_with_cast.SF-1720934.stable.err
        sql/test/BugTracker/Tests/broken_join.SF-1373391.stable.err
        sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.err
        sql/test/BugTracker/Tests/coalesce_equal_coalesce.SF-1907905.stable.err
        sql/test/BugTracker/Tests/copy_decimal.SF-1582957.stable.err
        sql/test/BugTracker/Tests/copy_overflow_null_bug.SF-1842550.stable.err
        sql/test/BugTracker/Tests/crash_on_fkey_update.SF-1703497.stable.err
        sql/test/BugTracker/Tests/crash_on_fkey_update2.SF-1703497.stable.err
        sql/test/BugTracker/Tests/create_column.SF-1643542.stable.err
        
sql/test/BugTracker/Tests/create_same_temp_tab_after_its_drop.SF-1850809.stable.err
        
sql/test/BugTracker/Tests/creation_of_exeception_for_select.SF-1841749.stable.err
        sql/test/BugTracker/Tests/drop_system_tables.SF-1550768.stable.err
        sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
        
sql/test/BugTracker/Tests/groupby_orderby_nonselected.SF-1723863.stable.err
        sql/test/BugTracker/Tests/insert_date.SF-1838785.stable.err
        sql/test/BugTracker/Tests/insert_values.SF-1578838.stable.err
        
sql/test/BugTracker/Tests/inserting_invalid_timestamp.SF-1363557.stable.err
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        sql/test/BugTracker/Tests/limits_of_decimal.SF-1685357.stable.err.int128
        sql/test/BugTracker/Tests/multivalue_insert.SF-1509864.stable.err
        sql/test/BugTracker/Tests/number_null_first_row.SF-1833286.stable.err
        sql/test/BugTracker/Tests/reset_session_vars.SF-1505987.stable.err
        sql/test/BugTracker/Tests/revoke_role.SF-1691646.stable.err
        sql/test/BugTracker/Tests/set_a_new_user_password.SF-1844050.stable.err
        sql/test/BugTracker/Tests/set_operation_coersions.SF-1543216.stable.err
        sql/test/BugTracker/Tests/string2int_conversion.SF-1356068.stable.err
        
sql/test/BugTracker/Tests/table_dependency_inside_union.SF-1884382.stable.err
        sql/test/BugTracker/Tests/temporary_tables.SF-1715669.stable.err
        
sql/test/BugTracker/Tests/update_fkey_with_value_not_in_the_pkey.SF-1734143.stable.err
        sql/test/BugTracker/Tests/update_pkey_bug.SF-1733712.stable.err
        sql/test/BugTracker/Tests/variables.SF-1508160.stable.err
        sql/test/BugTracker/Tests/view_creation_using_func.SF-1714814.stable.err
        sql/test/Dependencies/Tests/Dependencies.stable.err
        sql/test/LSST/Tests/dbQuery036.stable.err
        sql/test/Tests/50ways.stable.err
        sql/test/Tests/bincopycollist.stable.err
        sql/test/Tests/create_in_schema.stable.err
        sql/test/Tests/decimal.stable.err
        sql/test/Tests/default.stable.err
        sql/test/Tests/function_syntax.stable.err
        sql/test/Tests/ifexists-views.stable.err
        sql/test/Tests/ifexists.stable.err
        sql/test/Tests/marcin2.stable.err
        sql/test/Tests/marcin3.stable.err
        sql/test/Tests/null.stable.err
        sql/test/Tests/procedure_syntax.stable.err
        sql/test/Tests/session_vars.stable.err
        sql/test/Tests/setoptimizer.stable.err
        sql/test/Triggers/Tests/trigger_owner.stable.err
        sql/test/Triggers/Tests/triggers_schema_operations.stable.err
        sql/test/Update_Delete_action/Tests/delete_restrict.stable.err
        sql/test/Update_Delete_action/Tests/delete_set_default.stable.err
        sql/test/Update_Delete_action/Tests/delete_set_null.stable.err
        sql/test/Update_Delete_action/Tests/update_delete_set_null.stable.err
        
sql/test/Update_Delete_action/Tests/update_delete_set_null_crash.stable.err
        sql/test/Update_Delete_action/Tests/update_restrict.stable.err
        sql/test/Update_Delete_action/Tests/update_set_default.stable.err
        sql/test/Update_Delete_action/Tests/update_set_default_crash.stable.err
        sql/test/Update_Delete_action/Tests/update_set_null.stable.err
        sql/test/Users/Tests/changePasswordUser.stable.err
        sql/test/Users/Tests/changeSchemaUser.stable.err
        sql/test/Users/Tests/columnRights.stable.err
        sql/test/Users/Tests/copyinto.stable.err
        sql/test/Users/Tests/grantMonetdb.stable.err
        sql/test/Users/Tests/grantMonetdbToSchemaOwner.Bug-3771.stable.err
        sql/test/Users/Tests/grantPrivilegesNonDefaultRole.Bug-3365.stable.err
        sql/test/Users/Tests/grantRevokeAndGrantAgain.Bug-3765.stable.err
        sql/test/Users/Tests/grantRole.Bug-3772.stable.err
        sql/test/Users/Tests/renameUser.stable.err
        sql/test/Users/Tests/role.stable.err
        sql/test/Users/Tests/schema.stable.err
        sql/test/Via-m/Tests/event_s07.stable.err
        sql/test/Via-m/Tests/event_s11.stable.err
        sql/test/Via-m/Tests/file_s10.stable.err
        sql/test/Via-m/Tests/file_s12.stable.err
        sql/test/Via-m/Tests/media_s12.stable.err
        sql/test/Via-m/Tests/media_s14.stable.err
        sql/test/Via-m/Tests/media_s16.stable.err
        sql/test/Via-m/Tests/media_s18.stable.err
        sql/test/Via-m/Tests/media_s19.stable.err
        sql/test/Views/Tests/Views.stable.err
        sql/test/bugs/Tests/alter_add_column-bug.stable.err
        sql/test/bugs/Tests/alter_table_add_column.stable.err
        sql/test/bugs/Tests/alter_view.stable.err
        
sql/test/bugs/Tests/autocommit_illegal_statements-bug-sf-953545.stable.err
        sql/test/bugs/Tests/crash_order_by.stable.err
        sql/test/bugs/Tests/create_insert_select_aggr-bug-00001.stable.err
        sql/test/bugs/Tests/drop_foreignkey_selfreferencing.stable.err
        sql/test/bugs/Tests/filter_error.stable.err
        sql/test/bugs/Tests/foreignkey_leftjoin-bug-sf-854312.stable.err
        sql/test/bugs/Tests/groupby_having-bug-sf-947600.stable.err
        sql/test/bugs/Tests/interval_convert_bugs-sf-1274077-1274085.stable.err
        sql/test/bugs/Tests/primary_key-bug-sf-975308.stable.err
        sql/test/bugs/Tests/procedure_resolution_bug.stable.err
        sql/test/bugs/Tests/profile_bug-SF.1314649.stable.err
        sql/test/bugs/Tests/savepoint_rollback-bug-sf-953553.stable.err
        
sql/test/bugs/Tests/select_constant_from_where_1=1-bug-sf-1019529.stable.err
        sql/test/bugs/Tests/select_from_values.stable.err
        sql/test/bugs/Tests/unique-bug-sf-1043512.stable.err
        sql/test/copy/Tests/columns.stable.err
        sql/test/copy/Tests/int_parse.stable.err
        sql/test/copy/Tests/key_copy.stable.err
        sql/test/copy/Tests/load_stdin_incorrect_line_nr.stable.err
        sql/test/copy/Tests/nonutf8.stable.err
        sql/test/copy/Tests/null_as_string_errors.stable.err
        sql/test/mergetables/Tests/addtable.stable.err
        sql/test/mergetables/Tests/alter.stable.err
        sql/test/mergetables/Tests/crash0.stable.err
        sql/test/mergetables/Tests/doubletable.stable.err
        sql/test/mergetables/Tests/emptymergequery.stable.err
        sql/test/mergetables/Tests/mergedrop.stable.err
        sql/test/mergetables/Tests/mergedrop1.stable.err
        sql/test/mergetables/Tests/mergedropcrash.stable.err
        sql/test/mergetables/Tests/mergemergeload.stable.err
        sql/test/mergetables/Tests/types.stable.err
        
sql/test/mserver5-sql-readonly/Tests/mserver5-sql-readonly-table.stable.err
        
sql/test/mserver5-sql-readonly/Tests/mserver5-sql-readonly-view.stable.err
        sql/test/orderidx/Tests/oidx_all_types.stable.err
        sql/test/osm/Tests/drop_constraint_bug.stable.err
        sql/test/pg_regress/Tests/alter_table.stable.err
        sql/test/pg_regress/Tests/arrays.stable.err
        sql/test/pg_regress/Tests/boolean.stable.err
        sql/test/pg_regress/Tests/box.stable.err
        sql/test/pg_regress/Tests/char.stable.err
        sql/test/pg_regress/Tests/create_aggregate.stable.err
        sql/test/pg_regress/Tests/create_misc.stable.err
        sql/test/pg_regress/Tests/create_view.stable.err
        sql/test/pg_regress/Tests/date.stable.err
        sql/test/pg_regress/Tests/drop.stable.err
        sql/test/pg_regress/Tests/float4.stable.err
        sql/test/pg_regress/Tests/float8.stable.err.int128
        sql/test/pg_regress/Tests/horology.stable.err
        sql/test/pg_regress/Tests/inet.stable.err
        sql/test/pg_regress/Tests/insert.stable.err
        sql/test/pg_regress/Tests/int2.stable.err
        sql/test/pg_regress/Tests/int4.stable.err
        sql/test/pg_regress/Tests/int8.stable.err.int128
        sql/test/pg_regress/Tests/interval.stable.err.int128
        sql/test/pg_regress/Tests/limit.stable.err
        sql/test/pg_regress/Tests/numeric.stable.err
        sql/test/pg_regress/Tests/numeric_big.stable.err.int128
        sql/test/pg_regress/Tests/numerology.stable.err
        sql/test/pg_regress/Tests/oid.stable.err.int128
        sql/test/pg_regress/Tests/path.stable.err
        sql/test/pg_regress/Tests/point.stable.err
        sql/test/pg_regress/Tests/polygon.stable.err
        sql/test/pg_regress/Tests/reltime.stable.err
        sql/test/pg_regress/Tests/select_into.stable.err
        sql/test/pg_regress/Tests/strings.stable.err.int128
        sql/test/pg_regress/Tests/strings_concat.stable.err
        sql/test/pg_regress/Tests/time.stable.err
        sql/test/pg_regress/Tests/timestamp.stable.err
        sql/test/pg_regress/Tests/timestamptz.stable.err
        sql/test/pg_regress/Tests/timetz.stable.err
        sql/test/pg_regress/Tests/varchar.stable.err
        sql/test/pg_regress/Tests/without_oid.stable.err
        sql/test/snodgrass/Tests/cast_select.stable.err
        sql/test/snodgrass/Tests/cast_table.stable.err
        sql/test/snodgrass/Tests/interval_select.stable.err
        sql/test/ssqq/Tests/insert_query.stable.err
        sql/test/ssqq/Tests/insert_queue.stable.err
        sql/test/ssqq/Tests/insert_quser.stable.err
        tools/merovingian/daemon/multiplex-funnel.c
Branch: default
Log Message:

The MAPI library now deals with the SQLSTATE code.
Use the new function mapi_result_errorcode() to get the code.
The function mapi_explain_result new prints the SQLSTATE if one was
available.

Some MAPI functions now return const char * instead of plain char *.


diffs (truncated from 21730 to 300 lines):

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
@@ -507,7 +507,7 @@ Mapi mapi_connect(const char *host, int 
 MapiMsg mapi_destroy(Mapi mid);
 MapiMsg mapi_disconnect(Mapi mid);
 MapiMsg mapi_error(Mapi mid);
-char *mapi_error_str(Mapi mid);
+const char *mapi_error_str(Mapi mid);
 MapiMsg mapi_execute(MapiHdl hdl);
 MapiMsg mapi_explain(Mapi mid, FILE *fd);
 MapiMsg mapi_explain_query(MapiHdl hdl, FILE *fd);
@@ -570,7 +570,8 @@ MapiMsg mapi_read_response(MapiHdl hdl);
 MapiMsg mapi_reconnect(Mapi mid);
 MapiMsg mapi_release_id(Mapi mid, int id);
 char **mapi_resolve(const char *host, int port, const char *pattern);
-char *mapi_result_error(MapiHdl hdl);
+const char *mapi_result_error(MapiHdl hdl);
+const char *mapi_result_errorcode(MapiHdl hdl);
 mapi_int64 mapi_rows_affected(MapiHdl hdl);
 MapiMsg mapi_seek_row(MapiHdl hdl, mapi_int64 rowne, int whence);
 MapiHdl mapi_send(Mapi mid, const char *cmd);
@@ -2129,9 +2130,9 @@ int getDblConstant(MalBlkPtr mb, dbl val
 lng getDiskReads(void);
 lng getDiskSpace(void);
 lng getDiskWrites(void);
-str getExceptionMessage(str);
-str getExceptionPlace(str);
-enum malexception getExceptionType(str);
+str getExceptionMessage(const char *);
+str getExceptionPlace(const char *);
+enum malexception getExceptionType(const char *);
 int getFltConstant(MalBlkPtr mb, flt val);
 Scenario getFreeScenario(void);
 Symbol getFunctionSymbol(Module scope, InstrPtr p);
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -890,6 +890,7 @@ struct MapiResultSet {
        int fieldcnt;
        int maxfields;
        char *errorstr;         /* error from server */
+       char sqlstate[6];       /* the SQL state code */
        struct MapiColumn *fields;
        struct MapiRowBuf cache;
        int commentonly;        /* only comments seen so far */
@@ -1038,7 +1039,7 @@ mapi_error(Mapi mid)
        return mid->error;
 }
 
-char *
+const char *
 mapi_error_str(Mapi mid)
 {
        assert(mid);
@@ -1174,17 +1175,6 @@ clean_print(char *msg, const char *prefi
                if (strncmp(msg, prefix, len) == 0)
                        msg += len;
 
-               /* skip SQLSTATE if provided */
-               if (strlen(msg) > 6 && msg[5] == '!' &&
-                               ((msg[0] >= '0' && msg[0] <= '9') || (msg[0] >= 
'A' && msg[0] <= 'Z')) &&
-                               ((msg[1] >= '0' && msg[1] <= '9') || (msg[1] >= 
'A' && msg[1] <= 'Z')) &&
-                               ((msg[2] >= '0' && msg[2] <= '9') || (msg[2] >= 
'A' && msg[2] <= 'Z')) &&
-                               ((msg[3] >= '0' && msg[3] <= '9') || (msg[3] >= 
'A' && msg[3] <= 'Z')) &&
-                               ((msg[4] >= '0' && msg[4] <= '9') || (msg[4] >= 
'A' && msg[4] <= 'Z')))
-               {
-                       msg += 6;
-               }
-
                /* output line */
                fputs(msg, fd);
                fputc('\n', fd);
@@ -1202,19 +1192,8 @@ indented_print(const char *msg, const ch
        const char t = s[len - 1];
 
        while (p && *p) {
-               fprintf(fd, "%.*s%c", len - 1, s, t);
-               s = "        ";
-
-               /* skip SQLSTATE if provided */
-               if (strlen(p) > 6 && p[5] == '!' &&
-                               ((p[0] >= '0' && p[0] <= '9') || (p[0] >= 'A' 
&& p[0] <= 'Z')) &&
-                               ((p[1] >= '0' && p[1] <= '9') || (p[1] >= 'A' 
&& p[1] <= 'Z')) &&
-                               ((p[2] >= '0' && p[2] <= '9') || (p[2] >= 'A' 
&& p[2] <= 'Z')) &&
-                               ((p[3] >= '0' && p[3] <= '9') || (p[3] >= 'A' 
&& p[3] <= 'Z')) &&
-                               ((p[4] >= '0' && p[4] <= '9') || (p[4] >= 'A' 
&& p[4] <= 'Z')))
-               {
-                       p += 6;
-               }
+               fprintf(fd, "%*.*s%c", len - 1, len - 1, s, t);
+               s = "";
 
                q = strchr(p, '\n');
                if (q) {
@@ -1312,6 +1291,8 @@ mapi_explain_result(MapiHdl hdl, FILE *f
                if (hdl->query)
                        indented_print(hdl->query, "QUERY = ", fd);
                indented_print(hdl->result->errorstr, "ERROR = !", fd);
+               if (mid->languageId == LANG_SQL && hdl->result->sqlstate[0])
+                       indented_print(hdl->result->sqlstate, "CODE  = ", fd);
        } else {
                clean_print(hdl->result->errorstr, mid->noexplain, fd);
        }
@@ -1456,6 +1437,7 @@ new_result(MapiHdl hdl)
        result->tableid = -1;
        result->querytype = -1;
        result->errorstr = NULL;
+       memset(result->sqlstate, 0, sizeof(result->sqlstate));
 
        result->tuple_count = 0;
        result->row_count = 0;
@@ -1595,6 +1577,7 @@ close_result(MapiHdl hdl)
        if (result->errorstr)
                free(result->errorstr);
        result->errorstr = NULL;
+       memset(result->sqlstate, 0, sizeof(result->sqlstate));
        result->hdl = NULL;
        hdl->result = result->next;
        if (hdl->result == NULL)
@@ -1610,17 +1593,42 @@ add_error(struct MapiResultSet *result, 
        /* concatenate the error messages */
        size_t size = result->errorstr ? strlen(result->errorstr) : 0;
 
+       if (strlen(error) > 6 && error[5] == '!' &&
+           ((error[0] >= '0' && error[0] <= '9') ||
+            (error[0] >= 'A' && error[0] <= 'Z')) &&
+           ((error[1] >= '0' && error[1] <= '9') ||
+            (error[1] >= 'A' && error[1] <= 'Z')) &&
+           ((error[2] >= '0' && error[2] <= '9') ||
+            (error[2] >= 'A' && error[2] <= 'Z')) &&
+           ((error[3] >= '0' && error[3] <= '9') ||
+            (error[3] >= 'A' && error[3] <= 'Z')) &&
+           ((error[4] >= '0' && error[4] <= '9') ||
+            (error[4] >= 'A' && error[4] <= 'Z'))) {
+               if (result->errorstr == NULL) {
+                       /* remeber SQLSTATE for first error */
+                       strncpy(result->sqlstate, error, 5);
+                       result->sqlstate[5] = 0;
+               }
+               /* skip SQLSTATE */
+               error += 6;
+       }
        REALLOC(result->errorstr, size + strlen(error) + 2);
        strcpy(result->errorstr + size, error);
        strcat(result->errorstr + size, "\n");
 }
 
-char *
+const char *
 mapi_result_error(MapiHdl hdl)
 {
        return hdl && hdl->result ? hdl->result->errorstr : NULL;
 }
 
+const char *
+mapi_result_errorcode(MapiHdl hdl)
+{
+       return hdl && hdl->result && hdl->result->sqlstate[0] ? 
hdl->result->sqlstate : NULL;
+}
+
 /* Go to the next result set, if any, and close the current result
    set.  This function returns 1 if there are more result sets after
    the one that was closed, otherwise, if more input is needed, return
diff --git a/clients/mapilib/mapi.h b/clients/mapilib/mapi.h
--- a/clients/mapilib/mapi.h
+++ b/clients/mapilib/mapi.h
@@ -141,7 +141,7 @@ mapi_export MapiMsg mapi_reconnect(Mapi 
 mapi_export MapiMsg mapi_ping(Mapi mid);
 
 mapi_export MapiMsg mapi_error(Mapi mid);
-mapi_export char *mapi_error_str(Mapi mid);
+mapi_export const char *mapi_error_str(Mapi mid);
 mapi_export void mapi_noexplain(Mapi mid, char *errorprefix);
 mapi_export MapiMsg mapi_explain(Mapi mid, FILE *fd);
 mapi_export MapiMsg mapi_explain_query(MapiHdl hdl, FILE *fd);
@@ -157,7 +157,8 @@ mapi_export MapiMsg mapi_log(Mapi mid, c
 mapi_export MapiMsg mapi_setAutocommit(Mapi mid, int autocommit);
 mapi_export MapiMsg mapi_set_size_header(Mapi mid, int value);
 mapi_export MapiMsg mapi_release_id(Mapi mid, int id);
-mapi_export char *mapi_result_error(MapiHdl hdl);
+mapi_export const char *mapi_result_error(MapiHdl hdl);
+mapi_export const char *mapi_result_errorcode(MapiHdl hdl);
 mapi_export MapiMsg mapi_next_result(MapiHdl hdl);
 mapi_export MapiMsg mapi_needmore(MapiHdl hdl);
 mapi_export int mapi_more_results(MapiHdl hdl);
diff --git a/clients/odbc/driver/ODBCStmt.h b/clients/odbc/driver/ODBCStmt.h
--- a/clients/odbc/driver/ODBCStmt.h
+++ b/clients/odbc/driver/ODBCStmt.h
@@ -210,6 +210,5 @@ SQLRETURN MNDBPrepare(ODBCStmt *stmt, SQ
                      SQLINTEGER nSqlStrLength);
 SQLRETURN MNDBSetStmtAttr(ODBCStmt *stmt, SQLINTEGER Attribute,
                          SQLPOINTER Value, SQLINTEGER StringLength);
-const char *ODBCErrorType(const char *msg, const char **emsg);
 
 #endif
diff --git a/clients/odbc/driver/SQLExecDirect.c 
b/clients/odbc/driver/SQLExecDirect.c
--- a/clients/odbc/driver/SQLExecDirect.c
+++ b/clients/odbc/driver/SQLExecDirect.c
@@ -29,47 +29,11 @@
 #include "ODBCStmt.h"
 #include "ODBCUtil.h"
 
-static struct errors {
-       const char *error;
-       const char *msg;
-} errors[] = {
-       {"syntax error", "42000"},
-       {NULL, NULL},           /* sentinel */
-};
-
-const char *
-ODBCErrorType(const char *msg, const char **emsg)
-{
-       struct errors *e;
-
-       if (strlen(msg) > 6 && msg[5] == '!' &&
-           ((msg[0] >= '0' && msg[0] <= '9') ||
-            (msg[0] >= 'A' && msg[0] <= 'Z')) &&
-           ((msg[1] >= '0' && msg[1] <= '9') ||
-            (msg[1] >= 'A' && msg[1] <= 'Z')) &&
-           ((msg[2] >= '0' && msg[2] <= '9') ||
-            (msg[2] >= 'A' && msg[2] <= 'Z')) &&
-           ((msg[3] >= '0' && msg[3] <= '9') ||
-            (msg[3] >= 'A' && msg[3] <= 'Z')) &&
-           ((msg[4] >= '0' && msg[4] <= '9') ||
-            (msg[4] >= 'A' && msg[4] <= 'Z'))) {
-               *emsg = msg + 6;
-               while (**emsg == ' ')
-                       (*emsg)++;
-               return msg;
-       }
-
-       *emsg = msg;
-       for (e = errors; e->error != NULL; e++)
-               if (strncmp(msg, e->error, strlen(e->error)) == 0)
-                       return e->msg;
-       return NULL;
-}
-
 static SQLRETURN
 ODBCExecDirect(ODBCStmt *stmt, SQLCHAR *StatementText, SQLINTEGER TextLength)
 {
        char *query;
+       const char *err;
        MapiMsg ret;
        MapiHdl hdl;
 
@@ -118,21 +82,19 @@ ODBCExecDirect(ODBCStmt *stmt, SQLCHAR *
                addStmtError(stmt, stmt->Dbc->sql_attr_connection_timeout ? 
"HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0);
                return SQL_ERROR;
        default:
-               /* reuse variable for error string */
-               query = mapi_result_error(hdl);
-               if (query == NULL)
-                       query = mapi_error_str(stmt->Dbc->mid);
-               if (query != NULL) {
-                       const char *m;
-                       const char *e = ODBCErrorType(query, &m);
+               err = mapi_result_error(hdl);
+               if (err == NULL)
+                       err = mapi_error_str(stmt->Dbc->mid);
+               if (err != NULL) {
+                       const char *e = mapi_result_errorcode(hdl);
 
                        if (e) {
-                               addStmtError(stmt, e, m, 0);
+                               addStmtError(stmt, e, err, 0);
                                return SQL_ERROR;
                        }
                }
                /* General error */
-               addStmtError(stmt, "HY000", query, 0);
+               addStmtError(stmt, "HY000", err, 0);
                return SQL_ERROR;
        }
 
diff --git a/clients/odbc/driver/SQLExecute.c b/clients/odbc/driver/SQLExecute.c
--- a/clients/odbc/driver/SQLExecute.c
+++ b/clients/odbc/driver/SQLExecute.c
@@ -102,7 +102,7 @@ ODBCInitResult(ODBCStmt *stmt)
        int nrCols;
        ODBCDescRec *rec;
        MapiHdl hdl;
-       char *errstr;
+       const char *errstr;
 
        hdl = stmt->hdl;
 
@@ -116,10 +116,10 @@ ODBCInitResult(ODBCStmt *stmt)
       repeat:
        errstr = mapi_result_error(hdl);
        if (errstr) {
-               const char *emsg, *sqlstate;
+               const char *sqlstate;
 
-               if ((sqlstate = ODBCErrorType(errstr, &emsg)) != NULL)
-                       addStmtError(stmt, sqlstate, emsg, 0);
+               if ((sqlstate = mapi_result_errorcode(hdl)) != NULL)
+                       addStmtError(stmt, sqlstate, errstr, 0);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to