1 /*
2 * Purpose: Test behaviour of dbmorecmds()
3 * Functions: dbmorecmds
4 */
5
6 #include "common.h"
7
8 #include <common/test_assert.h>
9
10 int failed = 0;
11
12 int
main(int argc,char ** argv)13 main(int argc, char **argv)
14 {
15 const int rows_to_add = 10;
16 LOGINREC *login;
17 DBPROCESS *dbproc;
18 int i, nresults;
19
20 set_malloc_options();
21
22 read_login_info(argc, argv);
23 fprintf(stdout, "Starting %s\n", argv[0]);
24
25 /* Fortify_EnterScope(); */
26 dbinit();
27
28 dberrhandle(syb_err_handler);
29 dbmsghandle(syb_msg_handler);
30
31 fprintf(stdout, "About to logon\n");
32
33 login = dblogin();
34 fprintf(stdout, "after dblogin\n");
35 DBSETLPWD(login, PASSWORD);
36 DBSETLUSER(login, USER);
37 DBSETLAPP(login, "t0024");
38
39 fprintf(stdout, "About to open [%s]\n", USER);
40
41 dbproc = dbopen(login, SERVER);
42 fprintf(stdout, "After dbopen [%s]\n", SERVER);
43
44 if (strlen(DATABASE)) {
45 fprintf(stdout, "About to dbuse [%s]\n", DATABASE);
46 dbuse(dbproc, DATABASE);
47 }
48 dbloginfree(login);
49
50 fprintf(stdout, "After dbuse [%s]\n", DATABASE);
51
52 fprintf(stdout, "creating table\n");
53 sql_cmd(dbproc);
54 dbsqlexec(dbproc);
55 while (dbresults(dbproc) != NO_MORE_RESULTS) {
56 /* nop */
57 }
58
59 fprintf(stdout, "insert\n");
60 for (i = 0; i < rows_to_add; i++) {
61 sql_cmd(dbproc);
62 dbsqlexec(dbproc);
63 while (dbresults(dbproc) != NO_MORE_RESULTS) {
64 /* nop */
65 }
66 }
67
68 fprintf(stdout, "select one resultset\n");
69 sql_cmd(dbproc);
70 dbsqlexec(dbproc);
71
72 nresults = 0;
73
74 if (dbresults(dbproc) == SUCCEED) {
75 do {
76 while (dbnextrow(dbproc) != NO_MORE_ROWS)
77 continue;
78 nresults++;
79 } while (dbmorecmds(dbproc) == SUCCEED);
80 }
81
82 /* dbmorecmds should return success 0 times for select 1 */
83 if (nresults != 1) {
84 failed = 1;
85 fprintf(stdout, "Was expecting nresults == 1.\n");
86 exit(1);
87 }
88
89 dbcancel(dbproc);
90
91 fprintf(stdout, "select two resultsets\n");
92 sql_cmd(dbproc);
93 dbsqlexec(dbproc);
94
95 nresults = 0;
96
97 do {
98 if (dbresults(dbproc) == SUCCEED) {
99 while (dbnextrow(dbproc) != NO_MORE_ROWS)
100 continue;
101 nresults++;
102 }
103 } while (dbmorecmds(dbproc) == SUCCEED);
104
105
106 /* dbmorecmds should return success 2 times for select 2 */
107 if (nresults != 2) { /* two results sets plus a return code */
108 failed = 1;
109 fprintf(stdout, "nresults was %d; was expecting nresults = 2.\n", nresults);
110 exit(1);
111 }
112
113 /* end of test processing */
114 dbexit();
115
116 fprintf(stdout, "%s %s\n", __FILE__, (failed ? "failed!" : "OK"));
117 return failed ? 1 : 0;
118 }
119