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