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