Skip to content

Commit fb1bbd1

Browse files
committed
ZD-30 - Initial code by Tony Cairns from IBM
1 parent 22cbd09 commit fb1bbd1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+22089
-1
lines changed

CMakeLists.txt

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
cmake_minimum_required (VERSION 2.8.0)
2+
project (ibmdb2i)
3+
# Dave add -malign-power -malign-natural (below)
4+
# Our power engine will run better. Also fewer gcc odd boundary over runs.
5+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -malign-power -malign-natural")
6+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -malign-power -malign-natural")
7+
# message("-- ibmdb2i CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}")
8+
# message("-- ibmdb2i CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}")
9+
# message("-- ibmdb2i CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}")
10+
include_directories (
11+
../../include
12+
../../sql
13+
../../pcre)
14+
SET(IBMDB2I_SOURCES db2i_blobCollection.cc
15+
db2i_misc.cc
16+
db2i_charsetSupport.cc
17+
db2i_collationSupport.cc
18+
db2i_constraints.cc
19+
db2i_conversion.cc
20+
db2i_errors.cc
21+
db2i_file.cc
22+
db2i_ileBridge.cc
23+
db2i_ioBuffers.cc
24+
db2i_myconv.cc
25+
db2i_rir.cc
26+
db2i_sqlStatementStream.cc
27+
db2i_global.cc
28+
db2i_safeString.cc
29+
ha_ibmdb2i.cc)
30+
# LINK_INTERFACE_LIBRARIES
31+
set(PASELIB_LIBRARIES
32+
-L/QOpenSys/usr/lib
33+
pthread
34+
c
35+
iconv)
36+
# STATIC_ONLY (MANDATORY)
37+
# (MANDATORY) -- affects sql/sql_builtin.c (gen file on cmake, build-xxx.sh)
38+
# -- links ibmdb2i into mysqld (daemon)
39+
# -- INSTALL SONAME 'ha_ibmdb2i'; (no longer required)
40+
# MYSQL_ADD_PLUGIN(ibmdb2i ${IBMDB2I_SOURCES}
41+
# STORAGE_ENGINE STATIC_ONLY MANDATORY
42+
# LINK_LIBRARIES ${PASELIB_LIBRARIES})
43+
44+
# MODULE_ONLY
45+
# -- INSTALL SONAME 'ha_ibmdb2i';
46+
MYSQL_ADD_PLUGIN(ibmdb2i ${IBMDB2I_SOURCES}
47+
STORAGE_ENGINE MODULE_ONLY
48+
LINK_LIBRARIES ${PASELIB_LIBRARIES})
49+

README.md

Lines changed: 197 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,197 @@
1-
# db2iengine
1+
# ibmdb2i
2+
MariaDB IBM i DB2 storage engine.
3+
4+
version
5+
```
6+
1.0.1
7+
```
8+
9+
copy source
10+
```
11+
> mkdir -p storage/ibmdb2i/special
12+
> unzip maria_ibmdb2i-1.0.1.zip
13+
Note:
14+
Use storage/ibmdb2i, not storage/ibmidb2i (Dave)
15+
```
16+
17+
Fix-up for gcc 4.8.3
18+
```
19+
> cd storage/ibmdb2i/special
20+
> chmod +x zzcpy2gccfixed.sh
21+
> ./zzcpy2gccfixed.sh
22+
```
23+
24+
mariadb build (subset myisam only)
25+
```
26+
> cd /usr/src/zenddbi
27+
> chmod +x build-tony.sh
28+
> ./build-tony.sh (tony subset)
29+
-- or --
30+
> ./build-zenddbi.sh (zend)
31+
Note:
32+
add -malign-power -malign-natural (Dave)
33+
Our power engine will run better.
34+
Also fewer gcc odd boundary over runs.
35+
```
36+
37+
38+
start
39+
```
40+
> cd /usr/local/mariadb
41+
> ./bin/mysqld_safe&
42+
```
43+
44+
setup
45+
```
46+
$ bin/mysql -u root -p
47+
Enter password:
48+
Welcome to the MariaDB monitor. Commands end with ; or \g.
49+
MariaDB [(none)]> create database ranger;
50+
MariaDB [(none)]> CREATE USER 'ranger'@'localhost' IDENTIFIED BY 'ranger';
51+
MariaDB [(none)]> GRANT ALL PRIVILEGES ON * . * TO 'ranger'@'localhost';
52+
MariaDB [(none)]> FLUSH PRIVILEGES;
53+
MariaDB [(none)]> select host, user, password from mysql.user;
54+
```
55+
56+
test
57+
```
58+
> bin/mysql -u ranger -p
59+
> use ranger
60+
61+
MariaDB [ranger]> CREATE TABLE itiny (i tinyint, u tinyint unsigned) engine=ibmdb2i;
62+
MariaDB [ranger]> insert into itiny (i,u) values(127,255);
63+
MariaDB [ranger]> select * from itiny;
64+
65+
MariaDB [ranger]> CREATE TABLE ismall (i smallint, u smallint unsigned) engine=ibmdb2i;
66+
MariaDB [ranger]> insert into itiny (i,u) values(32767,65535);
67+
MariaDB [ranger]> select * from ismall;
68+
69+
MariaDB [ranger]> CREATE TABLE imedium (i mediumint, u mediumint unsigned) engine=ibmdb2i;
70+
MariaDB [ranger]> insert into imedium (i,u) values(-8388608,16777215);
71+
MariaDB [ranger]> select * from imedium;
72+
73+
MariaDB [ranger]> CREATE TABLE ibig (i bigint, u bigint unsigned) engine=ibmdb2i;
74+
MariaDB [ranger]> insert into ibig (i,u) values(9223372036854775807,18446744073709551615);
75+
MariaDB [ranger]> select * from ibig;
76+
77+
MariaDB [ranger]> CREATE TABLE ipack (i decimal(10,2), u decimal(10,2) unsigned) engine=ibmdb2i;
78+
MariaDB [ranger]> insert into ibig (i,u) values(12345678.91,12345678.91);
79+
MariaDB [ranger]> select * from ipack;
80+
81+
MariaDB [ranger]> CREATE TABLE inum (i numeric(10,2), u numeric(10,2) unsigned) engine=ibmdb2i;
82+
MariaDB [ranger]> insert into inum (i,u) values(-99999999.99,-99999999.99);
83+
MariaDB [ranger]> select * from inum;
84+
85+
MariaDB [ranger]> CREATE TABLE ifloat (i float) engine=ibmdb2i;
86+
MariaDB [ranger]> insert into ifloat (i) values(-9999.99);
87+
MariaDB [ranger]> insert into ifloat (i) values(99999.99);
88+
MariaDB [ranger]> select * from ifloat;
89+
90+
MariaDB [ranger]> CREATE TABLE idouble (i double) engine=ibmdb2i;
91+
MariaDB [ranger]> insert into idouble (i) values(-9999.99);
92+
MariaDB [ranger]> insert into idouble (i) values(87769999.99);
93+
MariaDB [ranger]> select * from idouble;
94+
95+
MariaDB [ranger]> CREATE TABLE ibit (i bit(8)) engine=ibmdb2i;
96+
MariaDB [ranger]> insert into ibit (i) values(b'11111111');
97+
MariaDB [ranger]> insert into ibit (i) values(b'01010101');
98+
MariaDB [ranger]> select i+0, HEX(i), OCT(i), BIN(i) from ibit;
99+
100+
MariaDB [ranger]> CREATE TABLE ichar10 (i char(10)) engine=ibmdb2i;
101+
MariaDB [ranger]> insert into ichar10 (i) values('MariaDB');
102+
MariaDB [ranger]> select * from ichar10;
103+
104+
MariaDB [ranger]> CREATE TABLE ivarchar (i varchar(10)) engine=ibmdb2i;
105+
MariaDB [ranger]> insert into ivarchar (i) values('Maria ');
106+
MariaDB [ranger]> select * from ivarchar;
107+
108+
MariaDB [ranger]> CREATE TABLE itinytext (i tinytext) engine=ibmdb2i;
109+
MariaDB [ranger]> insert into itinytext (i) values('A');
110+
MariaDB [ranger]> insert into itinytext (i) values('AB');
111+
MariaDB [ranger]> select * from itinytext;
112+
113+
MariaDB [ranger]> CREATE TABLE itext (i text) engine=ibmdb2i;
114+
MariaDB [ranger]> insert into itext (i) values('ABC');
115+
MariaDB [ranger]> insert into itext (i) values('12345678901234567890123456789012345678901234567890');
116+
MariaDB [ranger]> select * from itext;
117+
118+
MariaDB [ranger]> CREATE TABLE imediumtext (i mediumtext) engine=ibmdb2i;
119+
MariaDB [ranger]> insert into imediumtext (i) values('ABC');
120+
MariaDB [ranger]> insert into imediumtext (i) values('12345678901234567890123456789012345678901234567890');
121+
MariaDB [ranger]> select * from imediumtext;
122+
123+
MariaDB [ranger]> CREATE TABLE ilongtext (i longtext) engine=ibmdb2i;
124+
MariaDB [ranger]> insert into ilongtext (i) values('ABC');
125+
MariaDB [ranger]> insert into ilongtext (i) values('12345678901234567890123456789012345678901234567890');
126+
MariaDB [ranger]> select * from ilongtext;
127+
128+
MariaDB [ranger]> CREATE TABLE itinyblob (i tinyblob) engine=ibmdb2i
129+
MariaDB [ranger]> insert into itinyblob (i) values(x'DEADBEEF');
130+
MariaDB [ranger]> insert into itinyblob (i) values('ABC');
131+
MariaDB [ranger]> select HEX(i) from itinyblob;
132+
133+
MariaDB [ranger]> CREATE TABLE imediumblob (i mediumblob) engine=ibmdb2i;
134+
MariaDB [ranger]> insert into imediumblob (i) values(x'DEADBEEF');
135+
MariaDB [ranger]> insert into imediumblob (i) values(x'BADC0FFEE0DDF00D');
136+
MariaDB [ranger]> insert into imediumblob (i) values('ABC');
137+
MariaDB [ranger]> select HEX(i) from imediumblob;
138+
139+
MariaDB [ranger]> CREATE TABLE ilongblob (i longblob) engine=ibmdb2i
140+
MariaDB [ranger]> insert into ilongblob (i) values('ABC');
141+
MariaDB [ranger]> insert into ilongblob (i) values(x'BADC0FFEE0DDF00D');
142+
MariaDB [ranger]> insert into ilongblob (i) values(x'DEADBEEF');
143+
MariaDB [ranger]> select HEX(i) from ilongblob
144+
145+
MariaDB [ranger]> CREATE TABLE iblob (i blob) engine=ibmdb2i;
146+
MariaDB [ranger]> insert into iblob (i) values('ABC');
147+
MariaDB [ranger]> insert into iblob (i) values(b'1111111111111');
148+
MariaDB [ranger]> insert into iblob (i) values(x'DEADBEEF');
149+
MariaDB [ranger]> select HEX(i) from iblob;
150+
151+
MariaDB [ranger]> CREATE TABLE ibool (i boolean) engine=ibmdb2i;
152+
MariaDB [ranger]> insert into ibool (i) values(TRUE);
153+
MariaDB [ranger]> insert into ibool (i) values(FALSE);
154+
MariaDB [ranger]> select * from ibool;
155+
156+
MariaDB [ranger]> CREATE TABLE ibin (i binary(10)) engine=ibmdb2i;
157+
MariaDB [ranger]> insert into ibin (i) values('12345678901');
158+
MariaDB [ranger]> insert into ibin (i) values(xDEADBEEF);
159+
MariaDB [ranger]> insert into ibin (i) values(x'BADC0FFEE0DDF00D');
160+
MariaDB [ranger]> select HEX(i) from ibin;
161+
162+
MariaDB [ranger]> CREATE TABLE ivarbin (i varbinary(10)) engine=ibmdb2i;
163+
MariaDB [ranger]> insert into ivarbin (i) values(x'BADC0FFEE0DDF00D');
164+
MariaDB [ranger]> select HEX(i) from ivarbin;
165+
166+
MariaDB [ranger]> CREATE TABLE ienum (i enum('bob','sally','jodi','tony','sue')) engine=ibmdb2i;
167+
MariaDB [ranger]> insert into ienum (i) values('tony');
168+
MariaDB [ranger]> insert into ienum (i) values('sue');
169+
MariaDB [ranger]> select * from ienum;
170+
171+
MariaDB [ranger]> CREATE TABLE idate (i date) engine=ibmdb2i;
172+
MariaDB [ranger]> insert into idate (i) values("2010-01-12");
173+
MariaDB [ranger]> insert into idate (i) values('120314');
174+
MariaDB [ranger]> insert into idate (i) values('13*04*21');
175+
MariaDB [ranger]> select * from idate;
176+
177+
MariaDB [ranger]> CREATE TABLE itime (i time) engine=ibmdb2i;
178+
MariaDB [ranger]> insert into itime (i) values('9:6:3');
179+
MariaDB [ranger]> insert into itime (i) values(151413);
180+
MariaDB [ranger]> select * from itime;
181+
182+
MariaDB [ranger]> CREATE TABLE iyear (i year) engine=ibmdb2i
183+
MariaDB [ranger]> insert into iyear (i) values(1990);
184+
MariaDB [ranger]> insert into iyear (i) values('2012')
185+
MariaDB [ranger]> select * from iyear;
186+
187+
MariaDB [ranger]> CREATE TABLE idatetime (i datetime) engine=ibmdb2i;
188+
MariaDB [ranger]> insert into idatetime (i) values("2011-03-11");
189+
MariaDB [ranger]> insert into idatetime (i) values("2012-04-19 13:08:22");
190+
MariaDB [ranger]> select * from idatetime;
191+
192+
MariaDB [ranger]> CREATE TABLE istamp (i timestamp) engine=ibmdb2i;
193+
MariaDB [ranger]> insert into istamp (i) values("2012-04-19 13:08:22");
194+
MariaDB [ranger]> select * from istamp;
195+
196+
```
197+

0 commit comments

Comments
 (0)