%%
%% %CopyrightBegin%
%%
%% Copyright Ericsson AB 2011-2011. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
%%
%% %CopyrightEnd%
%%
%%
-module(mysql).
%% Note: This directive should only be used in test suites.
-compile(export_all).
%-------------------------------------------------------------------------
connection_string() ->
case test_server:os_type() of
{unix, linux} ->
"DSN=MySQL;Database=odbctest;Uid=odbctest;Pwd=gurka;CHARSET=utf8;SSTMT=SET NAMES 'utf8';";
{unix, sunos} ->
solaris_str();
{unix, darwin} ->
"DSN=MySQLMac;Database=odbctest;Uid=odbctest;Pwd=gurka;CHARSET=utf8;SSTMT=SET NAMES 'utf8';"
end.
solaris_str() ->
case erlang:system_info(system_architecture) of
"sparc" ++ _ ->
"DSN=MySQLSolaris10;Database=odbctest;Uid=odbctest;Pwd=gurka;CHARSET=utf8;SSTMT=SET NAMES 'utf8';";
"i386" ++ _ ->
"DSN=MySQLSolaris10i386;Database=odbctest;Uid=odbctest;Pwd=gurka;CHARSET=utf8;SSTMT=SET NAMES 'utf8';"
end.
%-------------------------------------------------------------------------
insert_result() ->
{selected,["ID","DATA"],[{1,"bar"}]}.
update_result() ->
{selected,["ID","DATA"],[{1,"foo"}]}.
selected_ID(N, next) ->
{selected,["ID"],[{N}]};
selected_ID(_, _) ->
{error, driver_does_not_support_function}.
selected_next_N(1)->
{selected,["ID"],
[{1},
{2},
{3}]};
selected_next_N(2)->
{selected,["ID"],
[{4},
{5}]}.
selected_relative_N(_)->
{error, driver_does_not_support_function}.
selected_absolute_N(_)->
{error, driver_does_not_support_function}.
selected_list_rows() ->
{selected,["ID", "DATA"],[[1, "bar"],[2,"foo"]]}.
first_list_rows() ->
{error, driver_does_not_support_function}.
last_list_rows() ->
{error, driver_does_not_support_function}.
prev_list_rows() ->
{error, driver_does_not_support_function}.
next_list_rows() ->
{selected,["ID","DATA"],[[1,"bar"]]}.
multiple_select()->
[{selected,["ID", "DATA"],[{1, "bar"},{2, "foo"}]},
{selected,["ID"],[{"foo"}]}].
multiple_mix()->
[{updated, 1},{updated, 1},
{selected,["ID", "DATA"],[{1, "foobar"},{2, "foo"}]},
{updated, 1}, {selected,["DATA"],[{"foo"}]}].
%-------------------------------------------------------------------------
var_char_min() ->
0.
var_char_max() ->
65535.
create_var_char_table(Size) ->
" (FIELD varchar(" ++ integer_to_list(Size) ++ "))".
%-------------------------------------------------------------------------
text_min() ->
1.
text_max() ->
2147483646. % 2147483647. %% 2^31 - 1
create_text_table() ->
" (FIELD text)".
%-------------------------------------------------------------------------
create_timestamp_table() ->
" (FIELD TIMESTAMP)".
%-------------------------------------------------------------------------
tiny_int_min() ->
-128.
tiny_int_max() ->
127.
create_tiny_int_table() ->
" (FIELD tinyint)".
tiny_int_min_selected() ->
{selected,["FIELD"],[{tiny_int_min()}]}.
tiny_int_max_selected() ->
{selected,["FIELD"], [{tiny_int_max()}]}.
%-------------------------------------------------------------------------
small_int_min() ->
-32768.
small_int_max() ->
32767.
create_small_int_table() ->
" (FIELD smallint)".
small_int_min_selected() ->
{selected,["FIELD"],[{-32768}]}.
small_int_max_selected() ->
{selected,["FIELD"], [{32767}]}.
%-------------------------------------------------------------------------
int_min() ->
-2147483648.
int_max() ->
2147483647.
create_int_table() ->
" (FIELD int)".
int_min_selected() ->
{selected,["FIELD"],[{-2147483648}]}.
int_max_selected() ->
{selected,["FIELD"], [{2147483647}]}.
%-------------------------------------------------------------------------
big_int_min() ->
-9223372036854775808.
big_int_max() ->
9223372036854775807.
create_big_int_table() ->
" (FIELD bigint )".
big_int_min_selected() ->
{selected,["FIELD"], [{"-9223372036854775808"}]}.
big_int_max_selected() ->
{selected,["FIELD"], [{"9223372036854775807"}]}.
%-------------------------------------------------------------------------
bit_false() ->
0.
bit_true() ->
1.
create_bit_table() ->
" (FIELD bit)".
bit_false_selected() ->
{selected,["FIELD"],[{"0"}]}.
bit_true_selected() ->
{selected,["FIELD"], [{"1"}]}.
%-------------------------------------------------------------------------
%% Do not test float min/max as value is only theoretical defined in
%% mysql and may vary depending on hardware.
create_float_table() ->
" (FIELD float)".
float_zero_selected() ->
{selected,["FIELD"],[{0.00000e+0}]}.
%-------------------------------------------------------------------------
real_min() ->
-3.40e+38.
real_max() ->
3.40e+38.
real_underflow() ->
"-3.41e+38".
real_overflow() ->
"3.41e+38".
create_real_table() ->
" (FIELD real)".
real_zero_selected() ->
{selected,["FIELD"],[{0.00000e+0}]}.
%-------------------------------------------------------------------------
param_select_small_int() ->
{selected,["FIELD"],[{1}, {2}]}.
param_select_int() ->
Int = small_int_max() + 1,
{selected,["FIELD"],[{1}, {Int}]}.
param_select_decimal() ->
{selected,["FIELD"],[{1},{2}]}.
param_select_numeric() ->
{selected,["FIELD"],[{1},{2}]}.
param_select_float() ->
{selected,["FIELD"],[{1.30000},{1.20000}]}.
param_select_real() ->
{selected,["FIELD"],[{1.30000},{1.20000}]}.
param_select_double() ->
{selected,["FIELD"],[{1.30000},{1.20000}]}.
param_select_mix() ->
{selected,["ID","DATA"],[{1, "foo"}, {2, "bar"}]}.
param_update() ->
{selected,["ID","DATA"],[{1, "foobar"}, {2, "foobar"}, {3, "baz"}]}.
param_delete() ->
{selected,["ID","DATA"],[{3, "baz"}]}.
param_select() ->
{selected,["ID","DATA"],[{1, "foo"},{3, "foo"}]}.
%-------------------------------------------------------------------------
describe_integer() ->
{ok,[{"myint1",sql_smallint},
{"myint2",sql_integer},
{"myint3",sql_integer}]}.
describe_string() ->
{ok,[{"str1",{sql_char,10}},
{"str2",{sql_char,10}},
{"str3",{sql_varchar,10}},
{"str4",{sql_varchar,10}}]}.
describe_floating() ->
{ok,[{"f",sql_real},{"r",sql_double},{"d",sql_double}]}.
describe_dec_num() ->
{ok,[{"mydec",{sql_decimal,9,3}},{"mynum",{sql_decimal,9,2}}]}.
describe_timestamp() ->
{ok, [{"FIELD", sql_timestamp}]}.