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