Line data Source code
1 : /*
2 : * Purpose: Test check dbcolinfo/dbtableinfo information
3 : * Functions: dbresults dbsqlexec dbtablecolinfo
4 : */
5 :
6 : #include "common.h"
7 :
8 : static int failed = 0;
9 :
10 : static void
11 24 : check_is(const char *value, const char *expected)
12 : {
13 24 : if (strcmp(value, expected) == 0)
14 : return;
15 :
16 0 : failed = 1;
17 0 : fprintf(stderr, "Wrong value, got \"%s\" expected \"%s\"\n", value, expected);
18 : }
19 :
20 : static void
21 24 : check_contains(const char *value, const char *expected)
22 : {
23 24 : if (strstr(value, expected) != NULL)
24 : return;
25 :
26 0 : failed = 1;
27 0 : fprintf(stderr, "Wrong value, got \"%s\" expected to contains \"%s\"\n", value, expected);
28 : }
29 :
30 : int
31 8 : main(int argc, char **argv)
32 : {
33 : LOGINREC *login;
34 : DBPROCESS *dbproc;
35 : int n_col;
36 : DBCOL2 col2;
37 :
38 8 : set_malloc_options();
39 :
40 8 : read_login_info(argc, argv);
41 :
42 8 : printf("Starting %s\n", argv[0]);
43 :
44 8 : dbinit();
45 :
46 8 : dberrhandle(syb_err_handler);
47 8 : dbmsghandle(syb_msg_handler);
48 :
49 8 : printf("About to logon\n");
50 :
51 8 : login = dblogin();
52 8 : DBSETLPWD(login, PASSWORD);
53 8 : DBSETLUSER(login, USER);
54 8 : DBSETLAPP(login, "colinfo");
55 :
56 8 : printf("About to open\n");
57 :
58 8 : dbproc = dbopen(login, SERVER);
59 8 : if (strlen(DATABASE))
60 8 : dbuse(dbproc, DATABASE);
61 8 : dbloginfree(login);
62 :
63 8 : printf("creating tables\n");
64 8 : sql_cmd(dbproc);
65 8 : dbsqlexec(dbproc);
66 8 : while (dbresults(dbproc) != NO_MORE_RESULTS) {
67 : /* nop */
68 : }
69 :
70 8 : sql_cmd(dbproc); /* select */
71 8 : dbsqlexec(dbproc);
72 :
73 8 : if (dbresults(dbproc) != SUCCEED) {
74 0 : printf("Was expecting a result set.");
75 0 : exit(1);
76 : }
77 :
78 24 : for (n_col = 1; n_col <= 3; ++n_col) {
79 24 : col2.SizeOfStruct = sizeof(col2);
80 24 : if (dbtablecolinfo(dbproc, n_col, (DBCOL *) &col2) != SUCCEED) {
81 0 : fprintf(stderr, "dbtablecolinfo failed for col %d\n", n_col);
82 0 : failed = 1;
83 0 : continue;
84 : }
85 :
86 24 : if (n_col == 1) {
87 8 : check_is(col2.Name, "number");
88 8 : check_contains(col2.TableName, "#colinfo_table");
89 16 : } else if (n_col == 2) {
90 8 : check_is(col2.Name, "is_a_string");
91 8 : check_contains(col2.TableName, "#colinfo_table");
92 : } else if (n_col == 3) {
93 8 : check_is(col2.Name, "dollars");
94 8 : check_contains(col2.TableName, "#test_table");
95 : }
96 : }
97 :
98 8 : dbexit();
99 :
100 8 : printf("%s %s\n", __FILE__, (failed ? "failed!" : "OK"));
101 8 : return failed ? 1 : 0;
102 : }
|