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