1#! /usr/bin/env python
2
3# Copyright (c) 1999-2018 David Muse
4# See the file COPYING for more information.
5
6from SQLRelay import PySQLRClient
7import sys
8import string
9from decimal import Decimal
10
11def checkSuccess(value,success):
12	if value==success:
13		print("success")
14	else:
15		print("wanted", type(success), ":", success)
16		print("got   ", type(value), ":", value)
17		print("failure")
18		sys.exit(1)
19
20def main():
21
22	#PySQLRClient.getNumericFieldsAsNumbers()
23
24	# instantiation
25	con=PySQLRClient.sqlrconnection("sqlrelay",9000,
26						"/tmp/test.socket",
27						"test","test")
28	cur=PySQLRClient.sqlrcursor(con)
29
30	# get database type
31	print("IDENTIFY: ")
32	checkSuccess(con.identify(),"mysql")
33
34	# ping
35	print("PING: ")
36	checkSuccess(con.ping(),1)
37	print()
38
39	# drop existing table
40	cur.sendQuery("drop table testtable")
41
42	# create a new table
43	print("CREATE TEMPTABLE: ")
44	checkSuccess(cur.sendQuery("create table testdb.testtable (testtinyint tinyint, testsmallint smallint, testmediumint mediumint, testint int, testbigint bigint, testfloat float, testreal real, testdecimal decimal(2,1), testdate date, testtime time, testdatetime datetime, testyear year, testchar char(40), testtext text, testvarchar varchar(40), testtinytext tinytext, testmediumtext mediumtext, testlongtext longtext, testtimestamp timestamp)"),1)
45	print()
46
47	print("INSERT: ")
48	checkSuccess(cur.sendQuery("insert into testdb.testtable values (1,1,1,1,1,1.1,1.1,1.1,'2001-01-01','01:00:00','2001-01-01 01:00:00','2001','char1','text1','varchar1','tinytext1','mediumtext1','longtext1',NULL)"),1)
49	checkSuccess(cur.sendQuery("insert into testdb.testtable values (2,2,2,2,2,2.1,2.1,2.1,'2002-01-01','02:00:00','2002-01-01 02:00:00','2002','char2','text2','varchar2','tinytext2','mediumtext2','longtext2',NULL)"),1)
50	checkSuccess(cur.sendQuery("insert into testdb.testtable values (3,3,3,3,3,3.1,3.1,3.1,'2003-01-01','03:00:00','2003-01-01 03:00:00','2003','char3','text3','varchar3','tinytext3','mediumtext3','longtext3',NULL)"),1)
51	checkSuccess(cur.sendQuery("insert into testdb.testtable values (4,4,4,4,4,4.1,4.1,4.1,'2004-01-01','04:00:00','2004-01-01 04:00:00','2004','char4','text4','varchar4','tinytext4','mediumtext4','longtext4',NULL)"),1)
52	print()
53
54	print("AFFECTED ROWS: ")
55	checkSuccess(cur.affectedRows(),1)
56	print()
57
58	print("BIND BY POSITION: ")
59	cur.prepareQuery("insert into testdb.testtable values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,NULL)")
60	checkSuccess(cur.countBindVariables(),18)
61	cur.inputBind("1",5)
62	cur.inputBind("2",5)
63	cur.inputBind("3",5)
64	cur.inputBind("4",5)
65	cur.inputBind("5",5)
66	cur.inputBind("6",5.1,2,1)
67	cur.inputBind("7",5.1,2,1)
68	cur.inputBind("8",5.1,2,1)
69	cur.inputBind("9","2005-01-01")
70	cur.inputBind("10","05:00:00")
71	cur.inputBind("11","2005-01-01 05:00:00")
72	cur.inputBind("12","2005")
73	cur.inputBind("13","char5")
74	cur.inputBind("14","text5")
75	cur.inputBind("15","varchar5")
76	cur.inputBind("16","tinytext5")
77	cur.inputBind("17","mediumtext5")
78	cur.inputBind("18","longtext5")
79	checkSuccess(cur.executeQuery(),1)
80	cur.clearBinds()
81	cur.inputBind("1",6)
82	cur.inputBind("2",6)
83	cur.inputBind("3",6)
84	cur.inputBind("4",6)
85	cur.inputBind("5",6)
86	cur.inputBind("6",6.1,2,1)
87	cur.inputBind("7",6.1,2,1)
88	cur.inputBind("8",6.1,2,1)
89	cur.inputBind("9",'2006-01-01')
90	cur.inputBind("10",'06:00:00')
91	cur.inputBind("11",'2006-01-01 06:00:00')
92	cur.inputBind("12",'2006')
93	cur.inputBind("13",'char6')
94	cur.inputBind("14",'text6')
95	cur.inputBind("15",'varchar6')
96	cur.inputBind("16",'tinytext6')
97	cur.inputBind("17",'mediumtext6')
98	cur.inputBind("18",'longtext6')
99	checkSuccess(cur.executeQuery(),1)
100	print()
101
102	print("ARRAY OF BINDS BY POSITION: ")
103	cur.clearBinds()
104	cur.inputBinds(["1","2","3","4","5","6",
105			"7","8","9","10","11","12",
106			"13","14","15",
107			"16","17","18",],
108		[7,7,7,7,7,7.1,7.1,7.1,'2007-01-01','07:00:00','2007-01-01 07:00:00','2007','char7','text7','varchar7','tinytext7','mediumtext7','longtext7'],
109		[0,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0],
110		[0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0])
111	checkSuccess(cur.executeQuery(),1)
112	print()
113
114	print("BIND BY POSITION WITH VALIDATION: ")
115	cur.clearBinds()
116	cur.inputBind("1",8)
117	cur.inputBind("2",8)
118	cur.inputBind("3",8)
119	cur.inputBind("4",8)
120	cur.inputBind("5",8)
121	cur.inputBind("6",8.1,2,1)
122	cur.inputBind("7",8.1,2,1)
123	cur.inputBind("8",8.1,2,1)
124	cur.inputBind("9",'2008-01-01')
125	cur.inputBind("10",'08:00:00')
126	cur.inputBind("11",'2008-01-01 08:00:00')
127	cur.inputBind("12",'2008')
128	cur.inputBind("13",'char8')
129	cur.inputBind("14",'text8')
130	cur.inputBind("15",'varchar8')
131	cur.inputBind("16",'tinytext8')
132	cur.inputBind("17",'mediumtext8')
133	cur.inputBind("18",'longtext8')
134	cur.validateBinds()
135	checkSuccess(cur.executeQuery(),1)
136	print()
137
138	print("SELECT: ")
139	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),1)
140	print()
141
142	print("COLUMN COUNT: ")
143	checkSuccess(cur.colCount(),19)
144	print()
145
146	print("COLUMN NAMES: ")
147	checkSuccess(cur.getColumnName(0),"testtinyint")
148	checkSuccess(cur.getColumnName(1),"testsmallint")
149	checkSuccess(cur.getColumnName(2),"testmediumint")
150	checkSuccess(cur.getColumnName(3),"testint")
151	checkSuccess(cur.getColumnName(4),"testbigint")
152	checkSuccess(cur.getColumnName(5),"testfloat")
153	checkSuccess(cur.getColumnName(6),"testreal")
154	checkSuccess(cur.getColumnName(7),"testdecimal")
155	checkSuccess(cur.getColumnName(8),"testdate")
156	checkSuccess(cur.getColumnName(9),"testtime")
157	checkSuccess(cur.getColumnName(10),"testdatetime")
158	checkSuccess(cur.getColumnName(11),"testyear")
159	checkSuccess(cur.getColumnName(12),"testchar")
160	checkSuccess(cur.getColumnName(13),"testtext")
161	checkSuccess(cur.getColumnName(14),"testvarchar")
162	checkSuccess(cur.getColumnName(15),"testtinytext")
163	checkSuccess(cur.getColumnName(16),"testmediumtext")
164	checkSuccess(cur.getColumnName(17),"testlongtext")
165	checkSuccess(cur.getColumnName(18),"testtimestamp")
166	cols=cur.getColumnNames()
167	checkSuccess(cols[0],"testtinyint")
168	checkSuccess(cols[1],"testsmallint")
169	checkSuccess(cols[2],"testmediumint")
170	checkSuccess(cols[3],"testint")
171	checkSuccess(cols[4],"testbigint")
172	checkSuccess(cols[5],"testfloat")
173	checkSuccess(cols[6],"testreal")
174	checkSuccess(cols[7],"testdecimal")
175	checkSuccess(cols[8],"testdate")
176	checkSuccess(cols[9],"testtime")
177	checkSuccess(cols[10],"testdatetime")
178	checkSuccess(cols[11],"testyear")
179	checkSuccess(cols[12],"testchar")
180	checkSuccess(cols[13],"testtext")
181	checkSuccess(cols[14],"testvarchar")
182	checkSuccess(cols[15],"testtinytext")
183	checkSuccess(cols[16],"testmediumtext")
184	checkSuccess(cols[17],"testlongtext")
185	checkSuccess(cols[18],"testtimestamp")
186	print()
187
188	print("COLUMN TYPES: ")
189	checkSuccess(cur.getColumnType(0),"TINYINT")
190	checkSuccess(cur.getColumnType(1),"SMALLINT")
191	checkSuccess(cur.getColumnType(2),"MEDIUMINT")
192	checkSuccess(cur.getColumnType(3),"INT")
193	checkSuccess(cur.getColumnType(4),"BIGINT")
194	checkSuccess(cur.getColumnType(5),"FLOAT")
195	checkSuccess(cur.getColumnType(6),"REAL")
196	checkSuccess(cur.getColumnType(7),"DECIMAL")
197	checkSuccess(cur.getColumnType(8),"DATE")
198	checkSuccess(cur.getColumnType(9),"TIME")
199	checkSuccess(cur.getColumnType(10),"DATETIME")
200	checkSuccess(cur.getColumnType(11),"YEAR")
201	checkSuccess(cur.getColumnType(12),"STRING")
202	checkSuccess(cur.getColumnType(13),"BLOB")
203	checkSuccess(cur.getColumnType(14),"CHAR")
204	checkSuccess(cur.getColumnType(15),"TINYBLOB")
205	checkSuccess(cur.getColumnType(16),"MEDIUMBLOB")
206	checkSuccess(cur.getColumnType(17),"LONGBLOB")
207	checkSuccess(cur.getColumnType(18),"TIMESTAMP")
208	checkSuccess(cur.getColumnType("testtinyint"),"TINYINT")
209	checkSuccess(cur.getColumnType("testsmallint"),"SMALLINT")
210	checkSuccess(cur.getColumnType("testmediumint"),"MEDIUMINT")
211	checkSuccess(cur.getColumnType("testint"),"INT")
212	checkSuccess(cur.getColumnType("testbigint"),"BIGINT")
213	checkSuccess(cur.getColumnType("testfloat"),"FLOAT")
214	checkSuccess(cur.getColumnType("testreal"),"REAL")
215	checkSuccess(cur.getColumnType("testdecimal"),"DECIMAL")
216	checkSuccess(cur.getColumnType("testdate"),"DATE")
217	checkSuccess(cur.getColumnType("testtime"),"TIME")
218	checkSuccess(cur.getColumnType("testdatetime"),"DATETIME")
219	checkSuccess(cur.getColumnType("testyear"),"YEAR")
220	checkSuccess(cur.getColumnType("testchar"),"STRING")
221	checkSuccess(cur.getColumnType("testtext"),"BLOB")
222	checkSuccess(cur.getColumnType("testvarchar"),"CHAR")
223	checkSuccess(cur.getColumnType("testtinytext"),"TINYBLOB")
224	checkSuccess(cur.getColumnType("testmediumtext"),"MEDIUMBLOB")
225	checkSuccess(cur.getColumnType("testlongtext"),"LONGBLOB")
226	checkSuccess(cur.getColumnType("testtimestamp"),"TIMESTAMP")
227	print()
228
229	print("COLUMN LENGTH: ")
230	checkSuccess(cur.getColumnLength(0),1)
231	checkSuccess(cur.getColumnLength(1),2)
232	checkSuccess(cur.getColumnLength(2),3)
233	checkSuccess(cur.getColumnLength(3),4)
234	checkSuccess(cur.getColumnLength(4),8)
235	checkSuccess(cur.getColumnLength(5),4)
236	checkSuccess(cur.getColumnLength(6),8)
237	checkSuccess(cur.getColumnLength(7),6)
238	checkSuccess(cur.getColumnLength(8),3)
239	checkSuccess(cur.getColumnLength(9),3)
240	checkSuccess(cur.getColumnLength(10),8)
241	checkSuccess(cur.getColumnLength(11),1)
242	checkSuccess(cur.getColumnLength(12),40)
243	checkSuccess(cur.getColumnLength(13),65535)
244	checkSuccess(cur.getColumnLength(14),41)
245	checkSuccess(cur.getColumnLength(15),255)
246	checkSuccess(cur.getColumnLength(16),16777215)
247	checkSuccess(cur.getColumnLength(17),2147483647)
248	checkSuccess(cur.getColumnLength(18),4)
249	checkSuccess(cur.getColumnLength("testtinyint"),1)
250	checkSuccess(cur.getColumnLength("testsmallint"),2)
251	checkSuccess(cur.getColumnLength("testmediumint"),3)
252	checkSuccess(cur.getColumnLength("testint"),4)
253	checkSuccess(cur.getColumnLength("testbigint"),8)
254	checkSuccess(cur.getColumnLength("testfloat"),4)
255	checkSuccess(cur.getColumnLength("testreal"),8)
256	checkSuccess(cur.getColumnLength("testdecimal"),6)
257	checkSuccess(cur.getColumnLength("testdate"),3)
258	checkSuccess(cur.getColumnLength("testtime"),3)
259	checkSuccess(cur.getColumnLength("testdatetime"),8)
260	checkSuccess(cur.getColumnLength("testyear"),1)
261	checkSuccess(cur.getColumnLength("testchar"),40)
262	checkSuccess(cur.getColumnLength("testtext"),65535)
263	checkSuccess(cur.getColumnLength("testvarchar"),41)
264	checkSuccess(cur.getColumnLength("testtinytext"),255)
265	checkSuccess(cur.getColumnLength("testmediumtext"),16777215)
266	checkSuccess(cur.getColumnLength("testlongtext"),2147483647)
267	checkSuccess(cur.getColumnLength("testtimestamp"),4)
268	print()
269
270	print("LONGEST COLUMN: ")
271	checkSuccess(cur.getLongest(0),1)
272	checkSuccess(cur.getLongest(1),1)
273	checkSuccess(cur.getLongest(2),1)
274	checkSuccess(cur.getLongest(3),1)
275	checkSuccess(cur.getLongest(4),1)
276	checkSuccess(cur.getLongest(5),3)
277	checkSuccess(cur.getLongest(6),3)
278	checkSuccess(cur.getLongest(7),3)
279	checkSuccess(cur.getLongest(8),10)
280	checkSuccess(cur.getLongest(9),8)
281	checkSuccess(cur.getLongest(10),19)
282	checkSuccess(cur.getLongest(11),4)
283	checkSuccess(cur.getLongest(12),5)
284	checkSuccess(cur.getLongest(13),5)
285	checkSuccess(cur.getLongest(14),8)
286	checkSuccess(cur.getLongest(15),9)
287	checkSuccess(cur.getLongest(16),11)
288	checkSuccess(cur.getLongest(17),9)
289	checkSuccess(cur.getLongest(18),19)
290	checkSuccess(cur.getLongest("testtinyint"),1)
291	checkSuccess(cur.getLongest("testsmallint"),1)
292	checkSuccess(cur.getLongest("testmediumint"),1)
293	checkSuccess(cur.getLongest("testint"),1)
294	checkSuccess(cur.getLongest("testbigint"),1)
295	checkSuccess(cur.getLongest("testfloat"),3)
296	checkSuccess(cur.getLongest("testreal"),3)
297	checkSuccess(cur.getLongest("testdecimal"),3)
298	checkSuccess(cur.getLongest("testdate"),10)
299	checkSuccess(cur.getLongest("testtime"),8)
300	checkSuccess(cur.getLongest("testdatetime"),19)
301	checkSuccess(cur.getLongest("testyear"),4)
302	checkSuccess(cur.getLongest("testchar"),5)
303	checkSuccess(cur.getLongest("testtext"),5)
304	checkSuccess(cur.getLongest("testvarchar"),8)
305	checkSuccess(cur.getLongest("testtinytext"),9)
306	checkSuccess(cur.getLongest("testmediumtext"),11)
307	checkSuccess(cur.getLongest("testlongtext"),9)
308	checkSuccess(cur.getLongest("testtimestamp"),19)
309	print()
310
311	print("ROW COUNT: ")
312	checkSuccess(cur.rowCount(),8)
313	print()
314
315	print("TOTAL ROWS: ")
316	checkSuccess(cur.totalRows(),8)
317	print()
318
319	print("FIRST ROW INDEX: ")
320	checkSuccess(cur.firstRowIndex(),0)
321	print()
322
323	print("END OF RESULT SET: ")
324	checkSuccess(cur.endOfResultSet(),1)
325	print()
326
327	print("FIELDS BY INDEX: ")
328	checkSuccess(cur.getField(0,0),"1")
329	checkSuccess(cur.getField(0,1),"1")
330	checkSuccess(cur.getField(0,2),"1")
331	checkSuccess(cur.getField(0,3),"1")
332	checkSuccess(cur.getField(0,4),"1")
333	checkSuccess(cur.getField(0,5),"1.1")
334	checkSuccess(cur.getField(0,6),"1.1")
335	checkSuccess(cur.getField(0,7),"1.1")
336	checkSuccess(cur.getField(0,8),"2001-01-01")
337	checkSuccess(cur.getField(0,9),"01:00:00")
338	checkSuccess(cur.getField(0,10),"2001-01-01 01:00:00")
339	checkSuccess(cur.getField(0,11),"2001")
340	checkSuccess(cur.getField(0,12),"char1")
341	checkSuccess(cur.getField(0,13),"text1")
342	checkSuccess(cur.getField(0,14),"varchar1")
343	checkSuccess(cur.getField(0,15),"tinytext1")
344	checkSuccess(cur.getField(0,16),"mediumtext1")
345	checkSuccess(cur.getField(0,17),"longtext1")
346	print()
347	checkSuccess(cur.getField(7,0),"8")
348	checkSuccess(cur.getField(7,1),"8")
349	checkSuccess(cur.getField(7,2),"8")
350	checkSuccess(cur.getField(7,3),"8")
351	checkSuccess(cur.getField(7,4),"8")
352	checkSuccess(cur.getField(7,5),"8.1")
353	checkSuccess(cur.getField(7,6),"8.1")
354	checkSuccess(cur.getField(7,7),"8.1")
355	checkSuccess(cur.getField(7,8),"2008-01-01")
356	checkSuccess(cur.getField(7,9),"08:00:00")
357	checkSuccess(cur.getField(7,10),"2008-01-01 08:00:00")
358	checkSuccess(cur.getField(7,11),"2008")
359	checkSuccess(cur.getField(7,12),"char8")
360	checkSuccess(cur.getField(7,13),"text8")
361	checkSuccess(cur.getField(7,14),"varchar8")
362	checkSuccess(cur.getField(7,15),"tinytext8")
363	checkSuccess(cur.getField(7,16),"mediumtext8")
364	checkSuccess(cur.getField(7,17),"longtext8")
365	print()
366
367	print("FIELD LENGTHS BY INDEX: ")
368	checkSuccess(cur.getFieldLength(0,0),1)
369	checkSuccess(cur.getFieldLength(0,1),1)
370	checkSuccess(cur.getFieldLength(0,2),1)
371	checkSuccess(cur.getFieldLength(0,3),1)
372	checkSuccess(cur.getFieldLength(0,4),1)
373	checkSuccess(cur.getFieldLength(0,5),3)
374	checkSuccess(cur.getFieldLength(0,6),3)
375	checkSuccess(cur.getFieldLength(0,7),3)
376	checkSuccess(cur.getFieldLength(0,8),10)
377	checkSuccess(cur.getFieldLength(0,9),8)
378	checkSuccess(cur.getFieldLength(0,10),19)
379	checkSuccess(cur.getFieldLength(0,11),4)
380	checkSuccess(cur.getFieldLength(0,12),5)
381	checkSuccess(cur.getFieldLength(0,13),5)
382	checkSuccess(cur.getFieldLength(0,14),8)
383	checkSuccess(cur.getFieldLength(0,15),9)
384	checkSuccess(cur.getFieldLength(0,16),11)
385	checkSuccess(cur.getFieldLength(0,17),9)
386	print()
387	checkSuccess(cur.getFieldLength(7,0),1)
388	checkSuccess(cur.getFieldLength(7,1),1)
389	checkSuccess(cur.getFieldLength(7,2),1)
390	checkSuccess(cur.getFieldLength(7,3),1)
391	checkSuccess(cur.getFieldLength(7,4),1)
392	checkSuccess(cur.getFieldLength(7,5),3)
393	checkSuccess(cur.getFieldLength(7,6),3)
394	checkSuccess(cur.getFieldLength(7,7),3)
395	checkSuccess(cur.getFieldLength(7,8),10)
396	checkSuccess(cur.getFieldLength(7,9),8)
397	checkSuccess(cur.getFieldLength(7,10),19)
398	checkSuccess(cur.getFieldLength(7,11),4)
399	checkSuccess(cur.getFieldLength(7,12),5)
400	checkSuccess(cur.getFieldLength(7,13),5)
401	checkSuccess(cur.getFieldLength(7,14),8)
402	checkSuccess(cur.getFieldLength(7,15),9)
403	checkSuccess(cur.getFieldLength(7,16),11)
404	checkSuccess(cur.getFieldLength(7,17),9)
405	print()
406
407	print("FIELDS BY NAME: ")
408	checkSuccess(cur.getField(0,"testtinyint"),"1")
409	checkSuccess(cur.getField(0,"testsmallint"),"1")
410	checkSuccess(cur.getField(0,"testmediumint"),"1")
411	checkSuccess(cur.getField(0,"testint"),"1")
412	checkSuccess(cur.getField(0,"testbigint"),"1")
413	checkSuccess(cur.getField(0,"testfloat"),"1.1")
414	checkSuccess(cur.getField(0,"testreal"),"1.1")
415	checkSuccess(cur.getField(0,"testdecimal"),"1.1")
416	checkSuccess(cur.getField(0,"testdate"),"2001-01-01")
417	checkSuccess(cur.getField(0,"testtime"),"01:00:00")
418	checkSuccess(cur.getField(0,"testdatetime"),"2001-01-01 01:00:00")
419	checkSuccess(cur.getField(0,"testyear"),"2001")
420	checkSuccess(cur.getField(0,"testchar"),"char1")
421	checkSuccess(cur.getField(0,"testtext"),"text1")
422	checkSuccess(cur.getField(0,"testvarchar"),"varchar1")
423	checkSuccess(cur.getField(0,"testtinytext"),"tinytext1")
424	checkSuccess(cur.getField(0,"testmediumtext"),"mediumtext1")
425	checkSuccess(cur.getField(0,"testlongtext"),"longtext1")
426	print()
427	checkSuccess(cur.getField(7,"testtinyint"),"8")
428	checkSuccess(cur.getField(7,"testsmallint"),"8")
429	checkSuccess(cur.getField(7,"testmediumint"),"8")
430	checkSuccess(cur.getField(7,"testint"),"8")
431	checkSuccess(cur.getField(7,"testbigint"),"8")
432	checkSuccess(cur.getField(7,"testfloat"),"8.1")
433	checkSuccess(cur.getField(7,"testreal"),"8.1")
434	checkSuccess(cur.getField(7,"testdecimal"),"8.1")
435	checkSuccess(cur.getField(7,"testdate"),"2008-01-01")
436	checkSuccess(cur.getField(7,"testtime"),"08:00:00")
437	checkSuccess(cur.getField(7,"testdatetime"),"2008-01-01 08:00:00")
438	checkSuccess(cur.getField(7,"testyear"),"2008")
439	checkSuccess(cur.getField(7,"testchar"),"char8")
440	checkSuccess(cur.getField(7,"testtext"),"text8")
441	checkSuccess(cur.getField(7,"testvarchar"),"varchar8")
442	checkSuccess(cur.getField(7,"testtinytext"),"tinytext8")
443	checkSuccess(cur.getField(7,"testmediumtext"),"mediumtext8")
444	checkSuccess(cur.getField(7,"testlongtext"),"longtext8")
445	print()
446
447	print("FIELD LENGTHS BY NAME: ")
448	checkSuccess(cur.getFieldLength(0,"testtinyint"),1)
449	checkSuccess(cur.getFieldLength(0,"testsmallint"),1)
450	checkSuccess(cur.getFieldLength(0,"testmediumint"),1)
451	checkSuccess(cur.getFieldLength(0,"testint"),1)
452	checkSuccess(cur.getFieldLength(0,"testbigint"),1)
453	checkSuccess(cur.getFieldLength(0,"testfloat"),3)
454	checkSuccess(cur.getFieldLength(0,"testreal"),3)
455	checkSuccess(cur.getFieldLength(0,"testdecimal"),3)
456	checkSuccess(cur.getFieldLength(0,"testdate"),10)
457	checkSuccess(cur.getFieldLength(0,"testtime"),8)
458	checkSuccess(cur.getFieldLength(0,"testdatetime"),19)
459	checkSuccess(cur.getFieldLength(0,"testyear"),4)
460	checkSuccess(cur.getFieldLength(0,"testchar"),5)
461	checkSuccess(cur.getFieldLength(0,"testtext"),5)
462	checkSuccess(cur.getFieldLength(0,"testvarchar"),8)
463	checkSuccess(cur.getFieldLength(0,"testtinytext"),9)
464	checkSuccess(cur.getFieldLength(0,"testmediumtext"),11)
465	checkSuccess(cur.getFieldLength(0,"testlongtext"),9)
466	print()
467	checkSuccess(cur.getFieldLength(7,"testtinyint"),1)
468	checkSuccess(cur.getFieldLength(7,"testsmallint"),1)
469	checkSuccess(cur.getFieldLength(7,"testmediumint"),1)
470	checkSuccess(cur.getFieldLength(7,"testint"),1)
471	checkSuccess(cur.getFieldLength(7,"testbigint"),1)
472	checkSuccess(cur.getFieldLength(7,"testfloat"),3)
473	checkSuccess(cur.getFieldLength(7,"testreal"),3)
474	checkSuccess(cur.getFieldLength(7,"testdecimal"),3)
475	checkSuccess(cur.getFieldLength(7,"testdate"),10)
476	checkSuccess(cur.getFieldLength(7,"testtime"),8)
477	checkSuccess(cur.getFieldLength(7,"testdatetime"),19)
478	checkSuccess(cur.getFieldLength(7,"testyear"),4)
479	checkSuccess(cur.getFieldLength(7,"testchar"),5)
480	checkSuccess(cur.getFieldLength(7,"testtext"),5)
481	checkSuccess(cur.getFieldLength(7,"testvarchar"),8)
482	checkSuccess(cur.getFieldLength(7,"testtinytext"),9)
483	checkSuccess(cur.getFieldLength(7,"testmediumtext"),11)
484	checkSuccess(cur.getFieldLength(7,"testlongtext"),9)
485	print()
486
487	print("FIELDS BY ARRAY: ")
488	fields=cur.getRow(0)
489	checkSuccess(fields[0],"1")
490	checkSuccess(fields[1],"1")
491	checkSuccess(fields[2],"1")
492	checkSuccess(fields[3],"1")
493	checkSuccess(fields[4],"1")
494	checkSuccess(fields[5],"1.1")
495	checkSuccess(fields[6],"1.1")
496	checkSuccess(fields[7],"1.1")
497	checkSuccess(fields[8],"2001-01-01")
498	checkSuccess(fields[9],"01:00:00")
499	checkSuccess(fields[10],"2001-01-01 01:00:00")
500	checkSuccess(fields[11],"2001")
501	checkSuccess(fields[12],"char1")
502	checkSuccess(fields[13],"text1")
503	checkSuccess(fields[14],"varchar1")
504	checkSuccess(fields[15],"tinytext1")
505	checkSuccess(fields[16],"mediumtext1")
506	checkSuccess(fields[17],"longtext1")
507	print()
508
509	print("FIELD LENGTHS BY ARRAY: ")
510	fieldlens=cur.getRowLengths(0)
511	checkSuccess(fieldlens[0],1)
512	checkSuccess(fieldlens[1],1)
513	checkSuccess(fieldlens[2],1)
514	checkSuccess(fieldlens[3],1)
515	checkSuccess(fieldlens[4],1)
516	checkSuccess(fieldlens[5],3)
517	checkSuccess(fieldlens[6],3)
518	checkSuccess(fieldlens[7],3)
519	checkSuccess(fieldlens[8],10)
520	checkSuccess(fieldlens[9],8)
521	checkSuccess(fieldlens[10],19)
522	checkSuccess(fieldlens[11],4)
523	checkSuccess(fieldlens[12],5)
524	checkSuccess(fieldlens[13],5)
525	checkSuccess(fieldlens[14],8)
526	checkSuccess(fieldlens[15],9)
527	checkSuccess(fieldlens[16],11)
528	checkSuccess(fieldlens[17],9)
529	print()
530
531	print("FIELDS BY DICTIONARY: ")
532	fields=cur.getRowDictionary(0)
533	checkSuccess(fields["testtinyint"],"1")
534	checkSuccess(fields["testsmallint"],"1")
535	checkSuccess(fields["testmediumint"],"1")
536	checkSuccess(fields["testint"],"1")
537	checkSuccess(fields["testbigint"],"1")
538	checkSuccess(fields["testfloat"],"1.1")
539	checkSuccess(fields["testreal"],"1.1")
540	checkSuccess(fields["testdecimal"],"1.1")
541	checkSuccess(fields["testdate"],"2001-01-01")
542	checkSuccess(fields["testtime"],"01:00:00")
543	checkSuccess(fields["testdatetime"],"2001-01-01 01:00:00")
544	checkSuccess(fields["testyear"],"2001")
545	checkSuccess(fields["testchar"],"char1")
546	checkSuccess(fields["testtext"],"text1")
547	checkSuccess(fields["testvarchar"],"varchar1")
548	checkSuccess(fields["testtinytext"],"tinytext1")
549	checkSuccess(fields["testmediumtext"],"mediumtext1")
550	checkSuccess(fields["testlongtext"],"longtext1")
551	print()
552	fields=cur.getRowDictionary(7)
553	checkSuccess(fields["testtinyint"],"8")
554	checkSuccess(fields["testsmallint"],"8")
555	checkSuccess(fields["testmediumint"],"8")
556	checkSuccess(fields["testint"],"8")
557	checkSuccess(fields["testbigint"],"8")
558	checkSuccess(fields["testfloat"],"8.1")
559	checkSuccess(fields["testreal"],"8.1")
560	checkSuccess(fields["testdecimal"],"8.1")
561	checkSuccess(fields["testdate"],"2008-01-01")
562	checkSuccess(fields["testtime"],"08:00:00")
563	checkSuccess(fields["testdatetime"],"2008-01-01 08:00:00")
564	checkSuccess(fields["testyear"],"2008")
565	checkSuccess(fields["testchar"],"char8")
566	checkSuccess(fields["testtext"],"text8")
567	checkSuccess(fields["testvarchar"],"varchar8")
568	checkSuccess(fields["testtinytext"],"tinytext8")
569	checkSuccess(fields["testmediumtext"],"mediumtext8")
570	checkSuccess(fields["testlongtext"],"longtext8")
571	print()
572
573	print("FIELD LENGTHS BY DICTIONARY: ")
574	fieldlengths=cur.getRowLengthsDictionary(0)
575	checkSuccess(fieldlengths["testtinyint"],1)
576	checkSuccess(fieldlengths["testsmallint"],1)
577	checkSuccess(fieldlengths["testmediumint"],1)
578	checkSuccess(fieldlengths["testint"],1)
579	checkSuccess(fieldlengths["testbigint"],1)
580	checkSuccess(fieldlengths["testfloat"],3)
581	checkSuccess(fieldlengths["testreal"],3)
582	checkSuccess(fieldlengths["testdecimal"],3)
583	checkSuccess(fieldlengths["testdate"],10)
584	checkSuccess(fieldlengths["testtime"],8)
585	checkSuccess(fieldlengths["testdatetime"],19)
586	checkSuccess(fieldlengths["testyear"],4)
587	checkSuccess(fieldlengths["testchar"],5)
588	checkSuccess(fieldlengths["testtext"],5)
589	checkSuccess(fieldlengths["testvarchar"],8)
590	checkSuccess(fieldlengths["testtinytext"],9)
591	checkSuccess(fieldlengths["testmediumtext"],11)
592	checkSuccess(fieldlengths["testlongtext"],9)
593	print()
594	fieldlengths=cur.getRowLengthsDictionary(7)
595	checkSuccess(fieldlengths["testtinyint"],1)
596	checkSuccess(fieldlengths["testsmallint"],1)
597	checkSuccess(fieldlengths["testmediumint"],1)
598	checkSuccess(fieldlengths["testint"],1)
599	checkSuccess(fieldlengths["testbigint"],1)
600	checkSuccess(fieldlengths["testfloat"],3)
601	checkSuccess(fieldlengths["testreal"],3)
602	checkSuccess(fieldlengths["testdecimal"],3)
603	checkSuccess(fieldlengths["testdate"],10)
604	checkSuccess(fieldlengths["testtime"],8)
605	checkSuccess(fieldlengths["testdatetime"],19)
606	checkSuccess(fieldlengths["testyear"],4)
607	checkSuccess(fieldlengths["testchar"],5)
608	checkSuccess(fieldlengths["testtext"],5)
609	checkSuccess(fieldlengths["testvarchar"],8)
610	checkSuccess(fieldlengths["testtinytext"],9)
611	checkSuccess(fieldlengths["testmediumtext"],11)
612	checkSuccess(fieldlengths["testlongtext"],9)
613	print()
614
615	print("INDIVIDUAL SUBSTITUTIONS: ")
616	cur.prepareQuery("select $(var1),'$(var2)',$(var3)")
617	cur.substitution("var1",1)
618	cur.substitution("var2","hello")
619	cur.substitution("var3",10.5556,6,4)
620	checkSuccess(cur.executeQuery(),1)
621	print()
622
623	print("FIELDS: ")
624	checkSuccess(cur.getField(0,0),"1")
625	checkSuccess(cur.getField(0,1),"hello")
626	checkSuccess(cur.getField(0,2),"10.5556")
627	print()
628
629	print("ARRAY SUBSTITUTIONS: ")
630	cur.prepareQuery("select $(var1),'$(var2)',$(var3)")
631	cur.substitutions(["var1","var2","var3"],
632				[1,"hello",10.5556],[0,0,6],[0,0,4])
633	checkSuccess(cur.executeQuery(),1)
634	print()
635
636	print("FIELDS: ")
637	checkSuccess(cur.getField(0,0),"1")
638	checkSuccess(cur.getField(0,1),"hello")
639	checkSuccess(cur.getField(0,2),"10.5556")
640	print()
641
642	print("NULLS as Nones: ")
643	cur.getNullsAsNone()
644	checkSuccess(cur.sendQuery("select NULL,1,NULL"),1)
645	checkSuccess(cur.getField(0,0),None)
646	checkSuccess(cur.getField(0,1),"1")
647	checkSuccess(cur.getField(0,2),None)
648	cur.getNullsAsEmptyStrings()
649	checkSuccess(cur.sendQuery("select NULL,1,NULL"),1)
650	checkSuccess(cur.getField(0,0),"")
651	checkSuccess(cur.getField(0,1),"1")
652	checkSuccess(cur.getField(0,2),"")
653	cur.getNullsAsNone()
654	print()
655
656	print("RESULT SET BUFFER SIZE: ")
657	checkSuccess(cur.getResultSetBufferSize(),0)
658	cur.setResultSetBufferSize(2)
659	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),1)
660	checkSuccess(cur.getResultSetBufferSize(),2)
661	print()
662	checkSuccess(cur.firstRowIndex(),0)
663	checkSuccess(cur.endOfResultSet(),0)
664	checkSuccess(cur.rowCount(),2)
665	checkSuccess(cur.getField(0,0),"1")
666	checkSuccess(cur.getField(1,0),"2")
667	checkSuccess(cur.getField(2,0),"3")
668	print()
669	checkSuccess(cur.firstRowIndex(),2)
670	checkSuccess(cur.endOfResultSet(),0)
671	checkSuccess(cur.rowCount(),4)
672	checkSuccess(cur.getField(6,0),"7")
673	checkSuccess(cur.getField(7,0),"8")
674	print()
675	checkSuccess(cur.firstRowIndex(),6)
676	checkSuccess(cur.endOfResultSet(),0)
677	checkSuccess(cur.rowCount(),8)
678	checkSuccess(cur.getField(8,0),None)
679	print()
680	checkSuccess(cur.firstRowIndex(),8)
681	checkSuccess(cur.endOfResultSet(),1)
682	checkSuccess(cur.rowCount(),8)
683	print()
684
685	print("DONT GET COLUMN INFO: ")
686	cur.dontGetColumnInfo()
687	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),1)
688	checkSuccess(cur.getColumnName(0),None)
689	checkSuccess(cur.getColumnLength(0),0)
690	checkSuccess(cur.getColumnType(0),None)
691	print()
692	cur.getColumnInfo()
693	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),1)
694	checkSuccess(cur.getColumnName(0),"testtinyint")
695	checkSuccess(cur.getColumnLength(0),1)
696	checkSuccess(cur.getColumnType(0),"TINYINT")
697	print()
698
699	print("SUSPENDED SESSION: ")
700	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),1)
701	cur.suspendResultSet()
702	checkSuccess(con.suspendSession(),1)
703	port=con.getConnectionPort()
704	socket=con.getConnectionSocket()
705	checkSuccess(con.resumeSession(port,socket),1)
706	print()
707	checkSuccess(cur.getField(0,0),"1")
708	checkSuccess(cur.getField(1,0),"2")
709	checkSuccess(cur.getField(2,0),"3")
710	checkSuccess(cur.getField(3,0),"4")
711	checkSuccess(cur.getField(4,0),"5")
712	checkSuccess(cur.getField(5,0),"6")
713	checkSuccess(cur.getField(6,0),"7")
714	checkSuccess(cur.getField(7,0),"8")
715	print()
716	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),1)
717	cur.suspendResultSet()
718	checkSuccess(con.suspendSession(),1)
719	port=con.getConnectionPort()
720	socket=con.getConnectionSocket()
721	checkSuccess(con.resumeSession(port,socket),1)
722	print()
723	checkSuccess(cur.getField(0,0),"1")
724	checkSuccess(cur.getField(1,0),"2")
725	checkSuccess(cur.getField(2,0),"3")
726	checkSuccess(cur.getField(3,0),"4")
727	checkSuccess(cur.getField(4,0),"5")
728	checkSuccess(cur.getField(5,0),"6")
729	checkSuccess(cur.getField(6,0),"7")
730	checkSuccess(cur.getField(7,0),"8")
731	print()
732	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),1)
733	cur.suspendResultSet()
734	checkSuccess(con.suspendSession(),1)
735	port=con.getConnectionPort()
736	socket=con.getConnectionSocket()
737	checkSuccess(con.resumeSession(port,socket),1)
738	print()
739	checkSuccess(cur.getField(0,0),"1")
740	checkSuccess(cur.getField(1,0),"2")
741	checkSuccess(cur.getField(2,0),"3")
742	checkSuccess(cur.getField(3,0),"4")
743	checkSuccess(cur.getField(4,0),"5")
744	checkSuccess(cur.getField(5,0),"6")
745	checkSuccess(cur.getField(6,0),"7")
746	checkSuccess(cur.getField(7,0),"8")
747	print()
748
749	print("SUSPENDED RESULT SET: ")
750	cur.setResultSetBufferSize(2)
751	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),1)
752	checkSuccess(cur.getField(2,0),"3")
753	id=cur.getResultSetId()
754	cur.suspendResultSet()
755	checkSuccess(con.suspendSession(),1)
756	port=con.getConnectionPort()
757	socket=con.getConnectionSocket()
758	checkSuccess(con.resumeSession(port,socket),1)
759	checkSuccess(cur.resumeResultSet(id),1)
760	print()
761	checkSuccess(cur.firstRowIndex(),4)
762	checkSuccess(cur.endOfResultSet(),0)
763	checkSuccess(cur.rowCount(),6)
764	checkSuccess(cur.getField(7,0),"8")
765	print()
766	checkSuccess(cur.firstRowIndex(),6)
767	checkSuccess(cur.endOfResultSet(),0)
768	checkSuccess(cur.rowCount(),8)
769	checkSuccess(cur.getField(8,0),None)
770	print()
771	checkSuccess(cur.firstRowIndex(),8)
772	checkSuccess(cur.endOfResultSet(),1)
773	checkSuccess(cur.rowCount(),8)
774	cur.setResultSetBufferSize(0)
775	print()
776
777	print("CACHED RESULT SET: ")
778	cur.cacheToFile("cachefile1")
779	cur.setCacheTtl(200)
780	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),1)
781	filename=cur.getCacheFileName()
782	checkSuccess(filename,"cachefile1")
783	cur.cacheOff()
784	checkSuccess(cur.openCachedResultSet(filename),1)
785	checkSuccess(cur.getField(7,0),"8")
786	print()
787
788	print("COLUMN COUNT FOR CACHED RESULT SET: ")
789	checkSuccess(cur.colCount(),19)
790	print()
791
792	print("COLUMN NAMES FOR CACHED RESULT SET: ")
793	checkSuccess(cur.getColumnName(0),"testtinyint")
794	checkSuccess(cur.getColumnName(1),"testsmallint")
795	checkSuccess(cur.getColumnName(2),"testmediumint")
796	checkSuccess(cur.getColumnName(3),"testint")
797	checkSuccess(cur.getColumnName(4),"testbigint")
798	checkSuccess(cur.getColumnName(5),"testfloat")
799	checkSuccess(cur.getColumnName(6),"testreal")
800	checkSuccess(cur.getColumnName(7),"testdecimal")
801	checkSuccess(cur.getColumnName(8),"testdate")
802	checkSuccess(cur.getColumnName(9),"testtime")
803	checkSuccess(cur.getColumnName(10),"testdatetime")
804	checkSuccess(cur.getColumnName(11),"testyear")
805	checkSuccess(cur.getColumnName(12),"testchar")
806	checkSuccess(cur.getColumnName(13),"testtext")
807	checkSuccess(cur.getColumnName(14),"testvarchar")
808	checkSuccess(cur.getColumnName(15),"testtinytext")
809	checkSuccess(cur.getColumnName(16),"testmediumtext")
810	checkSuccess(cur.getColumnName(17),"testlongtext")
811	cols=cur.getColumnNames()
812	checkSuccess(cols[0],"testtinyint")
813	checkSuccess(cols[1],"testsmallint")
814	checkSuccess(cols[2],"testmediumint")
815	checkSuccess(cols[3],"testint")
816	checkSuccess(cols[4],"testbigint")
817	checkSuccess(cols[5],"testfloat")
818	checkSuccess(cols[6],"testreal")
819	checkSuccess(cols[7],"testdecimal")
820	checkSuccess(cols[8],"testdate")
821	checkSuccess(cols[9],"testtime")
822	checkSuccess(cols[10],"testdatetime")
823	checkSuccess(cols[11],"testyear")
824	checkSuccess(cols[12],"testchar")
825	checkSuccess(cols[13],"testtext")
826	checkSuccess(cols[14],"testvarchar")
827	checkSuccess(cols[15],"testtinytext")
828	checkSuccess(cols[16],"testmediumtext")
829	checkSuccess(cols[17],"testlongtext")
830	print()
831
832	print("CACHED RESULT SET WITH RESULT SET BUFFER SIZE: ")
833	cur.setResultSetBufferSize(2)
834	cur.cacheToFile("cachefile1")
835	cur.setCacheTtl(200)
836	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),1)
837	filename=cur.getCacheFileName()
838	checkSuccess(filename,"cachefile1")
839	cur.cacheOff()
840	checkSuccess(cur.openCachedResultSet(filename),1)
841	checkSuccess(cur.getField(7,0),"8")
842	checkSuccess(cur.getField(8,0),None)
843	cur.setResultSetBufferSize(0)
844	print()
845
846	print("FROM ONE CACHE FILE TO ANOTHER: ")
847	cur.cacheToFile("cachefile2")
848	checkSuccess(cur.openCachedResultSet("cachefile1"),1)
849	cur.cacheOff()
850	checkSuccess(cur.openCachedResultSet("cachefile2"),1)
851	checkSuccess(cur.getField(7,0),"8")
852	checkSuccess(cur.getField(8,0),None)
853	print()
854
855	print("FROM ONE CACHE FILE TO ANOTHER WITH RESULT SET BUFFER SIZE: ")
856	cur.setResultSetBufferSize(2)
857	cur.cacheToFile("cachefile2")
858	checkSuccess(cur.openCachedResultSet("cachefile1"),1)
859	cur.cacheOff()
860	checkSuccess(cur.openCachedResultSet("cachefile2"),1)
861	checkSuccess(cur.getField(7,0),"8")
862	checkSuccess(cur.getField(8,0),None)
863	cur.setResultSetBufferSize(0)
864	print()
865
866	print("CACHED RESULT SET WITH SUSPEND AND RESULT SET BUFFER SIZE: ")
867	cur.setResultSetBufferSize(2)
868	cur.cacheToFile("cachefile1")
869	cur.setCacheTtl(200)
870	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),1)
871	checkSuccess(cur.getField(2,0),"3")
872	filename=cur.getCacheFileName()
873	checkSuccess(filename,"cachefile1")
874	id=cur.getResultSetId()
875	cur.suspendResultSet()
876	checkSuccess(con.suspendSession(),1)
877	port=con.getConnectionPort()
878	socket=con.getConnectionSocket()
879	print()
880	checkSuccess(con.resumeSession(port,socket),1)
881	checkSuccess(cur.resumeCachedResultSet(id,filename),1)
882	print()
883	checkSuccess(cur.firstRowIndex(),4)
884	checkSuccess(cur.endOfResultSet(),0)
885	checkSuccess(cur.rowCount(),6)
886	checkSuccess(cur.getField(7,0),"8")
887	print()
888	checkSuccess(cur.firstRowIndex(),6)
889	checkSuccess(cur.endOfResultSet(),0)
890	checkSuccess(cur.rowCount(),8)
891	checkSuccess(cur.getField(8,0),None)
892	print()
893	checkSuccess(cur.firstRowIndex(),8)
894	checkSuccess(cur.endOfResultSet(),1)
895	checkSuccess(cur.rowCount(),8)
896	cur.cacheOff()
897	print()
898	checkSuccess(cur.openCachedResultSet(filename),1)
899	checkSuccess(cur.getField(7,0),"8")
900	checkSuccess(cur.getField(8,0),None)
901	cur.setResultSetBufferSize(0)
902	print()
903
904	print("COMMIT AND ROLLBACK: ")
905	secondcon=PySQLRClient.sqlrconnection("sqlrelay",9000,
906						"/tmp/test.socket",
907						"test","test")
908	secondcur=PySQLRClient.sqlrcursor(secondcon)
909	checkSuccess(secondcur.sendQuery("select count(*) from testtable"),1)
910	checkSuccess(secondcur.getField(0,0),"0")
911	checkSuccess(con.commit(),1)
912	checkSuccess(secondcon.commit(),1)
913	checkSuccess(secondcur.sendQuery("select count(*) from testtable"),1)
914	checkSuccess(secondcur.getField(0,0),"8")
915	checkSuccess(con.autoCommitOn(),1)
916	checkSuccess(cur.sendQuery("insert into testdb.testtable values (10,10,10,10,10,10.1,10.1,10.1,'2010-01-01','10:00:00','2010-01-01 10:00:00','2010','char10','text10','varchar10','tinytext10','mediumtext10','longtext10',NULL)"),1)
917	checkSuccess(secondcon.commit(),1)
918	checkSuccess(secondcur.sendQuery("select count(*) from testtable"),1)
919	checkSuccess(secondcur.getField(0,0),"9")
920	checkSuccess(con.autoCommitOff(),1)
921	secondcon.commit()
922	print()
923
924	print("ROW RANGE:")
925	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),1)
926	print()
927	rows=cur.getRowRange(0,5)
928	checkSuccess(rows[0][0],"1")
929	checkSuccess(rows[0][1],"1")
930	checkSuccess(rows[0][2],"1")
931	checkSuccess(rows[0][3],"1")
932	checkSuccess(rows[0][4],"1")
933	checkSuccess(rows[0][5],"1.1")
934	checkSuccess(rows[0][6],"1.1")
935	checkSuccess(rows[0][7],"1.1")
936	checkSuccess(rows[0][8],"2001-01-01")
937	checkSuccess(rows[0][9],"01:00:00")
938	checkSuccess(rows[0][10],"2001-01-01 01:00:00")
939	checkSuccess(rows[0][11],"2001")
940	checkSuccess(rows[0][12],"char1")
941	checkSuccess(rows[0][13],"text1")
942	checkSuccess(rows[0][14],"varchar1")
943	checkSuccess(rows[0][15],"tinytext1")
944	checkSuccess(rows[0][16],"mediumtext1")
945	checkSuccess(rows[0][17],"longtext1")
946	print()
947	checkSuccess(rows[1][0],"2")
948	checkSuccess(rows[1][1],"2")
949	checkSuccess(rows[1][2],"2")
950	checkSuccess(rows[1][3],"2")
951	checkSuccess(rows[1][4],"2")
952	checkSuccess(rows[1][5],"2.1")
953	checkSuccess(rows[1][6],"2.1")
954	checkSuccess(rows[1][7],"2.1")
955	checkSuccess(rows[1][8],"2002-01-01")
956	checkSuccess(rows[1][9],"02:00:00")
957	checkSuccess(rows[1][10],"2002-01-01 02:00:00")
958	checkSuccess(rows[1][11],"2002")
959	checkSuccess(rows[1][12],"char2")
960	checkSuccess(rows[1][13],"text2")
961	checkSuccess(rows[1][14],"varchar2")
962	checkSuccess(rows[1][15],"tinytext2")
963	checkSuccess(rows[1][16],"mediumtext2")
964	checkSuccess(rows[1][17],"longtext2")
965	print()
966	checkSuccess(rows[2][0],"3")
967	checkSuccess(rows[2][1],"3")
968	checkSuccess(rows[2][2],"3")
969	checkSuccess(rows[2][3],"3")
970	checkSuccess(rows[2][4],"3")
971	checkSuccess(rows[2][5],"3.1")
972	checkSuccess(rows[2][6],"3.1")
973	checkSuccess(rows[2][7],"3.1")
974	checkSuccess(rows[2][8],"2003-01-01")
975	checkSuccess(rows[2][9],"03:00:00")
976	checkSuccess(rows[2][10],"2003-01-01 03:00:00")
977	checkSuccess(rows[2][11],"2003")
978	checkSuccess(rows[2][12],"char3")
979	checkSuccess(rows[2][13],"text3")
980	checkSuccess(rows[2][14],"varchar3")
981	checkSuccess(rows[2][15],"tinytext3")
982	checkSuccess(rows[2][16],"mediumtext3")
983	checkSuccess(rows[2][17],"longtext3")
984	print()
985	checkSuccess(rows[3][0],"4")
986	checkSuccess(rows[3][1],"4")
987	checkSuccess(rows[3][2],"4")
988	checkSuccess(rows[3][3],"4")
989	checkSuccess(rows[3][4],"4")
990	checkSuccess(rows[3][5],"4.1")
991	checkSuccess(rows[3][6],"4.1")
992	checkSuccess(rows[3][7],"4.1")
993	checkSuccess(rows[3][8],"2004-01-01")
994	checkSuccess(rows[3][9],"04:00:00")
995	checkSuccess(rows[3][10],"2004-01-01 04:00:00")
996	checkSuccess(rows[3][11],"2004")
997	checkSuccess(rows[3][12],"char4")
998	checkSuccess(rows[3][13],"text4")
999	checkSuccess(rows[3][14],"varchar4")
1000	checkSuccess(rows[3][15],"tinytext4")
1001	checkSuccess(rows[3][16],"mediumtext4")
1002	checkSuccess(rows[3][17],"longtext4")
1003	print()
1004	checkSuccess(rows[4][0],"5")
1005	checkSuccess(rows[4][1],"5")
1006	checkSuccess(rows[4][2],"5")
1007	checkSuccess(rows[4][3],"5")
1008	checkSuccess(rows[4][4],"5")
1009	checkSuccess(rows[4][5],"5.1")
1010	checkSuccess(rows[4][6],"5.1")
1011	checkSuccess(rows[4][7],"5.1")
1012	checkSuccess(rows[4][8],"2005-01-01")
1013	checkSuccess(rows[4][9],"05:00:00")
1014	checkSuccess(rows[4][10],"2005-01-01 05:00:00")
1015	checkSuccess(rows[4][11],"2005")
1016	checkSuccess(rows[4][12],"char5")
1017	checkSuccess(rows[4][13],"text5")
1018	checkSuccess(rows[4][14],"varchar5")
1019	checkSuccess(rows[4][15],"tinytext5")
1020	checkSuccess(rows[4][16],"mediumtext5")
1021	checkSuccess(rows[4][17],"longtext5")
1022	print()
1023	checkSuccess(rows[5][0],"6")
1024	checkSuccess(rows[5][1],"6")
1025	checkSuccess(rows[5][2],"6")
1026	checkSuccess(rows[5][3],"6")
1027	checkSuccess(rows[5][4],"6")
1028	checkSuccess(rows[5][5],"6.1")
1029	checkSuccess(rows[5][6],"6.1")
1030	checkSuccess(rows[5][7],"6.1")
1031	checkSuccess(rows[5][8],"2006-01-01")
1032	checkSuccess(rows[5][9],"06:00:00")
1033	checkSuccess(rows[5][10],"2006-01-01 06:00:00")
1034	checkSuccess(rows[5][11],"2006")
1035	checkSuccess(rows[5][12],"char6")
1036	checkSuccess(rows[5][13],"text6")
1037	checkSuccess(rows[5][14],"varchar6")
1038	checkSuccess(rows[5][15],"tinytext6")
1039	checkSuccess(rows[5][16],"mediumtext6")
1040	checkSuccess(rows[5][17],"longtext6")
1041	print()
1042
1043	print("FINISHED SUSPENDED SESSION: ")
1044	checkSuccess(cur.sendQuery("select * from testtable order by testint"),1)
1045	checkSuccess(cur.getField(4,0),"5")
1046	checkSuccess(cur.getField(5,0),"6")
1047	checkSuccess(cur.getField(6,0),"7")
1048	checkSuccess(cur.getField(7,0),"8")
1049	id=cur.getResultSetId()
1050	cur.suspendResultSet()
1051	checkSuccess(con.suspendSession(),1)
1052	port=con.getConnectionPort()
1053	socket=con.getConnectionSocket()
1054	checkSuccess(con.resumeSession(port,socket),1)
1055	checkSuccess(cur.resumeResultSet(id),1)
1056	checkSuccess(cur.getField(4,0),None)
1057	checkSuccess(cur.getField(5,0),None)
1058	checkSuccess(cur.getField(6,0),None)
1059	checkSuccess(cur.getField(7,0),None)
1060	print()
1061
1062	# drop existing table
1063	cur.sendQuery("drop table testtable")
1064
1065	# invalid queries...
1066	print("INVALID QUERIES: ")
1067	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),0)
1068	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),0)
1069	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),0)
1070	checkSuccess(cur.sendQuery("select * from testtable order by testtinyint"),0)
1071	print()
1072	checkSuccess(cur.sendQuery("insert into testtable values (1,2,3,4)"),0)
1073	checkSuccess(cur.sendQuery("insert into testtable values (1,2,3,4)"),0)
1074	checkSuccess(cur.sendQuery("insert into testtable values (1,2,3,4)"),0)
1075	checkSuccess(cur.sendQuery("insert into testtable values (1,2,3,4)"),0)
1076	print()
1077	checkSuccess(cur.sendQuery("create table testtable"),0)
1078	checkSuccess(cur.sendQuery("create table testtable"),0)
1079	checkSuccess(cur.sendQuery("create table testtable"),0)
1080	checkSuccess(cur.sendQuery("create table testtable"),0)
1081	print()
1082
1083if __name__ == "__main__":
1084	main()
1085	sys.exit(0)
1086