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