1--
2-- ### Cast handling for default and insert values
3--
4
5drop if exists table tstr;
6drop if exists table tint;
7drop if exists table ttiny;
8drop if exists table tsmall;
9drop if exists table tlong;
10drop if exists table tdecimal;
11drop if exists table tfloat;
12drop if exists table tdouble;
13drop if exists table tbigint;
14drop if exists table tdatetime;
15drop if exists table tfixed;
16drop if exists table tbool;
17
18drop if exists table tdef1;
19drop if exists table tdef2;
20drop if exists table tdef3;
21
22create table tstr ( a string(30));
23insert into tstr values ( 1 );
24insert into tstr values ( (long)1 );
25insert into tstr values ( '1' );
26insert into tstr values ( true );
27insert into tstr values ( sysdate );
28insert into tstr values ( (bigint)1 );
29insert into tstr values ( 1.0 );
30insert into tstr values ( (double)1.0 );
31insert into tstr values ( (decimal)1.0 );
32insert into tstr values ( (fixed)1.0 );
33insert into tstr values ( (smallint)1 );
34insert into tstr values ( (tinyint)1 );
35
36select * from tstr;
37
38create table tint ( a int);
39insert into tint values ( 1 );
40insert into tint values ( (long)1 );
41insert into tint values ( '1' );
42insert into tint values ( true );
43insert into tint values ( sysdate );
44insert into tint values ( (bigint)1 );
45insert into tint values ( 1.0 );
46insert into tint values ( (double)1.0 );
47insert into tint values ( (decimal)1.0 );
48insert into tint values ( (fixed)1.0 );
49insert into tint values ( (smallint)1 );
50insert into tint values ( (tinyint)1 );
51
52select * from tint;
53
54create table tlong ( a long);
55insert into tlong values ( 1 );
56insert into tlong values ( (long)1 );
57insert into tlong values ( '1' );
58insert into tlong values ( true );
59insert into tlong values ( sysdate );
60insert into tlong values ( (bigint)1 );
61insert into tlong values ( 1.0 );
62insert into tlong values ( (double)1.0 );
63insert into tlong values ( (decimal)1.0 );
64insert into tlong values ( (fixed)1.0 );
65insert into tlong values ( (smallint)1 );
66insert into tlong values ( (tinyint)1 );
67
68select * from tlong;
69
70create table tdecimal ( a decimal(15));
71insert into tdecimal values ( 1 );
72insert into tdecimal values ( (long)1 );
73insert into tdecimal values ( '1' );
74insert into tdecimal values ( true );
75insert into tdecimal values ( sysdate );
76insert into tdecimal values ( (bigint)1 );
77insert into tdecimal values ( 1.0 );
78insert into tdecimal values ( (double)1.0 );
79insert into tdecimal values ( (decimal)1.0 );
80insert into tdecimal values ( (fixed)1.0 );
81insert into tdecimal values ( (smallint)1 );
82insert into tdecimal values ( (tinyint)1 );
83
84select * from tdecimal;
85
86create table tsmall ( a smallint);
87insert into tsmall values ( 1 );
88insert into tsmall values ( (long)1 );
89insert into tsmall values ( '1' );
90insert into tsmall values ( true );
91insert into tsmall values ( (bigint)1 );
92insert into tsmall values ( 1.0 );
93insert into tsmall values ( (double)1.0 );
94insert into tsmall values ( (decimal)1.0 );
95insert into tsmall values ( (fixed)1.0 );
96insert into tsmall values ( (tinyint)1 );
97
98select * from tsmall;
99
100create table ttiny ( a tinyint);
101insert into ttiny values ( 1 );
102insert into ttiny values ( (long)1 );
103insert into ttiny values ( '1' );
104insert into ttiny values ( true );
105insert into ttiny values ( (bigint)1 );
106insert into ttiny values ( 1.0 );
107insert into ttiny values ( (double)1.0 );
108insert into ttiny values ( (decimal)1.0 );
109insert into ttiny values ( (fixed)1.0 );
110insert into ttiny values ( (smallint)1 );
111
112select * from ttiny;
113
114create table tdatetime ( a datetime);
115insert into tdatetime values ( 1476634567 );
116insert into tdatetime values ( (long)1476634567 );
117insert into tdatetime values ( '03.07.2016 15:59:00' );
118insert into tdatetime values ( (bigint)1476634567 );
119insert into tdatetime values ( 1476634567.0 );
120insert into tdatetime values ( (double)1476634567.0 );
121insert into tdatetime values ( (decimal)1476634567.0 );
122
123select * from tdatetime;
124
125create table tbigint ( a bigint(10));
126insert into tbigint values ( 1 );
127insert into tbigint values ( (long)1 );
128insert into tbigint values ( '1' );
129insert into tbigint values ( true );
130insert into tbigint values ( (bigint)1 );
131insert into tbigint values ( 1.0 );
132insert into tbigint values ( (double)1.0 );
133insert into tbigint values ( (decimal)1.0 );
134insert into tbigint values ( (fixed)1.0 );
135insert into tbigint values ( (smallint)1 );
136
137create table tfixed ( a fixed(7));
138insert into tfixed values ( 1 );
139insert into tfixed values ( (long)1 );
140insert into tfixed values ( '1.0756' );
141insert into tfixed values ( true );
142insert into tfixed values ( 1.8976 );
143insert into tfixed values ( (double)1.0 );
144insert into tfixed values ( (decimal)1.0345 );
145insert into tfixed values ( (fixed)1.0000000 );
146insert into tfixed values ( (smallint)1 );
147
148select * from tfixed;
149
150create table tbool ( a bool);
151insert into tbool values ( 1 );
152insert into tbool values ( (long)1 );
153insert into tbool values ( 'true' );
154insert into tbool values ( true );
155insert into tbool values ( 1.8976 );
156insert into tbool values ( (double)1.0 );
157insert into tbool values ( (decimal)1.0345 );
158insert into tbool values ( (fixed)1.00000 );
159insert into tbool values ( (smallint)1 );
160
161select * from tbool;
162
163create table tfloat ( a double);
164insert into tfloat values ( 1 );
165insert into tfloat values ( (long)1 );
166insert into tfloat values ( '1.0' );
167insert into tfloat values ( true );
168insert into tfloat values ( (bigint)1 );
169insert into tfloat values ( 1.0 );
170insert into tfloat values ( (double)1.0 );
171insert into tfloat values ( (decimal)1.0 );
172insert into tfloat values ( (fixed)1.0 );
173insert into tfloat values ( (smallint)1 );
174insert into tfloat values ( (tinyint)1 );
175
176select * from tfloat;
177
178create table tdouble ( a double);
179insert into tdouble values ( 1 );
180insert into tdouble values ( (long)1 );
181insert into tdouble values ( '1.0' );
182insert into tdouble values ( true );
183insert into tdouble values ( (bigint)1 );
184insert into tdouble values ( 1.0 );
185insert into tdouble values ( (double)1.0 );
186insert into tdouble values ( (decimal)1.0 );
187insert into tdouble values ( (fixed)1.0 );
188insert into tdouble values ( (smallint)1 );
189insert into tdouble values ( (tinyint)1 );
190
191select * from tdouble;
192
193
194-- default checks
195
196create table tdef1 ( a int, b fixed(2) default 3.257867 not null);
197desc table tdef1;
198insert into tdef1 ( a ) values ( 3 );
199select * from tdef1;
200
201create table tdef2 ( a int, b fixed(2) default 56 not null);
202desc table tdef2;
203
204insert into tdef2 ( a ) values ( 1 );
205insert into tdef2 ( a, b ) values ( 2, (fixed)44.98 );
206insert into tdef2 ( a, b ) values ( 3, 44 );
207
208create table tdef3 ( a int, b float default 7.99 not null);
209desc table tdef3;
210
211insert into tdef3 ( a ) values ( 1 );
212insert into tdef3 ( a, b ) values ( 2, 44.98 );
213insert into tdef3 ( a, b ) values ( 3, 44 );
214
215