Skip to content

Commit 01b5efa

Browse files
committed
Fix ODBC compile, prevent ODBCVER warning, though the version numbers go
not match.
1 parent 0cbfde7 commit 01b5efa

File tree

3 files changed

+99
-92
lines changed

3 files changed

+99
-92
lines changed

src/interfaces/odbc/info.c

Lines changed: 95 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -2255,12 +2255,15 @@ char tables_query[MAX_STATEMENT_LEN];
22552255
char trig_deferrable[2];
22562256
char trig_initdeferred[2];
22572257
char trig_args[1024];
2258-
char upd_rule[MAX_NAME_LEN], del_rule[MAX_NAME_LEN];
2258+
char upd_rule[MAX_TABLE_LEN], del_rule[MAX_TABLE_LEN];
22592259
char pk_table_needed[MAX_TABLE_LEN + 1];
22602260
char fk_table_needed[MAX_TABLE_LEN + 1];
22612261
char *pkey_ptr, *fkey_ptr, *pk_table, *fk_table;
22622262
int i, j, k, num_keys;
2263-
SWORD trig_nargs, upd_rule_type, del_rule_type, defer_type;
2263+
SWORD trig_nargs, upd_rule_type=0, del_rule_type=0;
2264+
#if (ODBCVER >= 0x0300)
2265+
SWORD defer_type;
2266+
#endif
22642267
char pkey[MAX_INFO_STRING];
22652268
Int2 result_cols;
22662269

@@ -2694,136 +2697,136 @@ Int2 result_cols;
26942697
return SQL_ERROR;
26952698
}
26962699

2697-
result = SQLBindCol(htbl_stmt, 5, SQL_C_CHAR,
2698-
upd_rule, sizeof(upd_rule), NULL);
2699-
if((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO)) {
2700-
stmt->errormsg = tbl_stmt->errormsg;
2700+
result = SQLBindCol(htbl_stmt, 5, SQL_C_CHAR,
2701+
upd_rule, sizeof(upd_rule), NULL);
2702+
if((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO)) {
2703+
stmt->errormsg = tbl_stmt->errormsg;
27012704
stmt->errornumber = tbl_stmt->errornumber;
27022705
SC_log_error(func, "", stmt);
27032706
SQLFreeStmt(htbl_stmt, SQL_DROP);
27042707
return SQL_ERROR;
27052708
}
27062709

2707-
result = SQLBindCol(htbl_stmt, 6, SQL_C_CHAR,
2708-
del_rule, sizeof(del_rule), NULL);
2709-
if((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO)) {
2710-
stmt->errormsg = tbl_stmt->errormsg;
2711-
stmt->errornumber = tbl_stmt->errornumber;
2710+
result = SQLBindCol(htbl_stmt, 6, SQL_C_CHAR,
2711+
del_rule, sizeof(del_rule), NULL);
2712+
if((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO)) {
2713+
stmt->errormsg = tbl_stmt->errormsg;
2714+
stmt->errornumber = tbl_stmt->errornumber;
27122715
SC_log_error(func, "", stmt);
2713-
SQLFreeStmt(htbl_stmt, SQL_DROP);
2716+
SQLFreeStmt(htbl_stmt, SQL_DROP);
27142717
return SQL_ERROR;
27152718
}
27162719

2717-
result = SQLFetch(htbl_stmt);
2718-
if (result == SQL_NO_DATA_FOUND)
2719-
return SQL_SUCCESS;
2720+
result = SQLFetch(htbl_stmt);
2721+
if (result == SQL_NO_DATA_FOUND)
2722+
return SQL_SUCCESS;
27202723

2721-
if(result != SQL_SUCCESS) {
2722-
stmt->errormsg = SC_create_errormsg(htbl_stmt);
2723-
stmt->errornumber = tbl_stmt->errornumber;
2724+
if(result != SQL_SUCCESS) {
2725+
stmt->errormsg = SC_create_errormsg(htbl_stmt);
2726+
stmt->errornumber = tbl_stmt->errornumber;
27242727
SC_log_error(func, "", stmt);
2725-
SQLFreeStmt(htbl_stmt, SQL_DROP);
2728+
SQLFreeStmt(htbl_stmt, SQL_DROP);
27262729
return SQL_ERROR;
27272730
}
27282731

27292732
while (result == SQL_SUCCESS) {
27302733

27312734
/* Calculate the number of key parts */
2732-
num_keys = (trig_nargs - 4) / 2;;
2735+
num_keys = (trig_nargs - 4) / 2;;
27332736

27342737
/* Handle action (i.e., 'cascade', 'restrict', 'setnull') */
2735-
if (!strcmp(upd_rule, "RI_FKey_cascade_upd")) {
2736-
upd_rule_type = SQL_CASCADE;
2737-
} else if (!strcmp(upd_rule, "RI_FKey_noaction_upd")) {
2738-
upd_rule_type = SQL_NO_ACTION;
2739-
} else if (!strcmp(upd_rule, "RI_FKey_restrict_upd")) {
2740-
upd_rule_type = SQL_NO_ACTION;
2741-
} else if (!strcmp(upd_rule, "RI_FKey_setdefault_upd")) {
2742-
upd_rule_type = SQL_SET_DEFAULT;
2743-
} else if (!strcmp(upd_rule, "RI_FKey_setnull_upd")) {
2744-
upd_rule_type = SQL_SET_NULL;
2745-
}
2746-
2747-
if (!strcmp(upd_rule, "RI_FKey_cascade_del")) {
2748-
del_rule_type = SQL_CASCADE;
2749-
} else if (!strcmp(upd_rule, "RI_FKey_noaction_del")) {
2750-
del_rule_type = SQL_NO_ACTION;
2751-
} else if (!strcmp(upd_rule, "RI_FKey_restrict_del")) {
2752-
del_rule_type = SQL_NO_ACTION;
2753-
} else if (!strcmp(upd_rule, "RI_FKey_setdefault_del")) {
2754-
del_rule_type = SQL_SET_DEFAULT;
2755-
} else if (!strcmp(upd_rule, "RI_FKey_setnull_del")) {
2756-
del_rule_type = SQL_SET_NULL;
2757-
}
2758-
2759-
#if (ODBCVER >= 0x0300)
2760-
/* Set deferrability type */
2761-
if (!strcmp(trig_initdeferred, "y")) {
2762-
defer_type = SQL_INITIALLY_DEFERRED;
2763-
} else if (!strcmp(trig_deferrable, "y")) {
2764-
defer_type = SQL_INITIALLY_IMMEDIATE;
2765-
} else {
2766-
defer_type = SQL_NOT_DEFERRABLE;
2767-
}
2768-
#endif /* ODBCVER >= 0x0300 */
2769-
2770-
mylog("Foreign Key Case#1: trig_nargs = %d, num_keys = %d\n", trig_nargs, num_keys);
2771-
2772-
/* Get to first primary key */
2773-
pkey_ptr = trig_args;
2774-
for (i = 0; i < 5; i++)
2775-
pkey_ptr += strlen(pkey_ptr) + 1;
2776-
2777-
2778-
/* Get to first foreign table */
2779-
fk_table = trig_args;
2780-
fk_table += strlen(fk_table) + 1;
2781-
2782-
/* Get to first foreign key */
2783-
fkey_ptr = trig_args;
2784-
for (k = 0; k < 4; k++)
2785-
fkey_ptr += strlen(fkey_ptr) + 1;
2786-
2787-
for (k = 0; k < num_keys; k++) {
2788-
2789-
mylog("pkey_ptr = '%s', fk_table = '%s', fkey_ptr = '%s'\n", pkey_ptr, fk_table, fkey_ptr);
2738+
if (!strcmp(upd_rule, "RI_FKey_cascade_upd")) {
2739+
upd_rule_type = SQL_CASCADE;
2740+
} else if (!strcmp(upd_rule, "RI_FKey_noaction_upd")) {
2741+
upd_rule_type = SQL_NO_ACTION;
2742+
} else if (!strcmp(upd_rule, "RI_FKey_restrict_upd")) {
2743+
upd_rule_type = SQL_NO_ACTION;
2744+
} else if (!strcmp(upd_rule, "RI_FKey_setdefault_upd")) {
2745+
upd_rule_type = SQL_SET_DEFAULT;
2746+
} else if (!strcmp(upd_rule, "RI_FKey_setnull_upd")) {
2747+
upd_rule_type = SQL_SET_NULL;
2748+
}
2749+
2750+
if (!strcmp(upd_rule, "RI_FKey_cascade_del")) {
2751+
del_rule_type = SQL_CASCADE;
2752+
} else if (!strcmp(upd_rule, "RI_FKey_noaction_del")) {
2753+
del_rule_type = SQL_NO_ACTION;
2754+
} else if (!strcmp(upd_rule, "RI_FKey_restrict_del")) {
2755+
del_rule_type = SQL_NO_ACTION;
2756+
} else if (!strcmp(upd_rule, "RI_FKey_setdefault_del")) {
2757+
del_rule_type = SQL_SET_DEFAULT;
2758+
} else if (!strcmp(upd_rule, "RI_FKey_setnull_del")) {
2759+
del_rule_type = SQL_SET_NULL;
2760+
}
2761+
2762+
#if (ODBCVER >= 0x0300)
2763+
/* Set deferrability type */
2764+
if (!strcmp(trig_initdeferred, "y")) {
2765+
defer_type = SQL_INITIALLY_DEFERRED;
2766+
} else if (!strcmp(trig_deferrable, "y")) {
2767+
defer_type = SQL_INITIALLY_IMMEDIATE;
2768+
} else {
2769+
defer_type = SQL_NOT_DEFERRABLE;
2770+
}
2771+
#endif /* ODBCVER >= 0x0300 */
2772+
2773+
mylog("Foreign Key Case#1: trig_nargs = %d, num_keys = %d\n", trig_nargs, num_keys);
2774+
2775+
/* Get to first primary key */
2776+
pkey_ptr = trig_args;
2777+
for (i = 0; i < 5; i++)
2778+
pkey_ptr += strlen(pkey_ptr) + 1;
2779+
2780+
2781+
/* Get to first foreign table */
2782+
fk_table = trig_args;
2783+
fk_table += strlen(fk_table) + 1;
2784+
2785+
/* Get to first foreign key */
2786+
fkey_ptr = trig_args;
2787+
for (k = 0; k < 4; k++)
2788+
fkey_ptr += strlen(fkey_ptr) + 1;
2789+
2790+
for (k = 0; k < num_keys; k++) {
2791+
2792+
mylog("pkey_ptr = '%s', fk_table = '%s', fkey_ptr = '%s'\n", pkey_ptr, fk_table, fkey_ptr);
27902793

27912794
row = (TupleNode *)malloc(sizeof(TupleNode) + (result_cols - 1) * sizeof(TupleField));
27922795

2793-
mylog("pk_table_needed = '%s', pkey_ptr = '%s'\n", pk_table_needed, pkey_ptr);
2796+
mylog("pk_table_needed = '%s', pkey_ptr = '%s'\n", pk_table_needed, pkey_ptr);
27942797
set_tuplefield_null(&row->tuple[0]);
27952798
set_tuplefield_string(&row->tuple[1], "");
2796-
set_tuplefield_string(&row->tuple[2], pk_table_needed);
2797-
set_tuplefield_string(&row->tuple[3], pkey_ptr);
2799+
set_tuplefield_string(&row->tuple[2], pk_table_needed);
2800+
set_tuplefield_string(&row->tuple[3], pkey_ptr);
27982801

2799-
mylog("fk_table = '%s', fkey_ptr = '%s'\n", fk_table, fkey_ptr);
2802+
mylog("fk_table = '%s', fkey_ptr = '%s'\n", fk_table, fkey_ptr);
28002803
set_tuplefield_null(&row->tuple[4]);
28012804
set_tuplefield_string(&row->tuple[5], "");
28022805
set_tuplefield_string(&row->tuple[6], fk_table);
2803-
set_tuplefield_string(&row->tuple[7], fkey_ptr);
2806+
set_tuplefield_string(&row->tuple[7], fkey_ptr);
28042807

2805-
set_tuplefield_int2(&row->tuple[8], (Int2) (k + 1));
2808+
set_tuplefield_int2(&row->tuple[8], (Int2) (k + 1));
28062809

2807-
mylog("upd_rule = %d, del_rule= %d", upd_rule_type, del_rule_type);
2808-
set_nullfield_int2(&row->tuple[9], (Int2) upd_rule_type);
2809-
set_nullfield_int2(&row->tuple[10], (Int2) del_rule_type);
2810+
mylog("upd_rule = %d, del_rule= %d", upd_rule_type, del_rule_type);
2811+
set_nullfield_int2(&row->tuple[9], (Int2) upd_rule_type);
2812+
set_nullfield_int2(&row->tuple[10], (Int2) del_rule_type);
28102813

28112814
set_tuplefield_null(&row->tuple[11]);
28122815
set_tuplefield_null(&row->tuple[12]);
28132816

2814-
set_tuplefield_string(&row->tuple[13], trig_args);
2817+
set_tuplefield_string(&row->tuple[13], trig_args);
28152818

2816-
#if (ODBCVER >= 0x0300)
2817-
mylog("defer_type = '%s', defer_type);
2818-
set_tuplefield_int2(&row->tuple[14], defer_type);
2819-
#endif /* ODBCVER >= 0x0300 */
2819+
#if (ODBCVER >= 0x0300)
2820+
mylog("defer_type = '%s'", defer_type);
2821+
set_tuplefield_int2(&row->tuple[14], defer_type);
2822+
#endif /* ODBCVER >= 0x0300 */
28202823

28212824
QR_add_tuple(stmt->result, row);
28222825

28232826
/* next primary/foreign key */
2824-
for (j = 0; j < 2; j++) {
2825-
pkey_ptr += strlen(pkey_ptr) + 1;
2826-
fkey_ptr += strlen(fkey_ptr) + 1;
2827+
for (j = 0; j < 2; j++) {
2828+
pkey_ptr += strlen(pkey_ptr) + 1;
2829+
fkey_ptr += strlen(fkey_ptr) + 1;
28272830
}
28282831
}
28292832

src/interfaces/odbc/isql.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ typedef signed short RETCODE;
2424
# define SQL_API EXPORT CALLBACK
2525
# endif
2626

27+
#ifndef ODBCVER
2728
# define ODBCVER 0x0200
29+
#endif
2830

2931
# define SQL_MAX_MESSAGE_LENGTH 512
3032
# define SQL_MAX_DSN_LENGTH 32

src/interfaces/odbc/psqlodbc.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ typedef double SDOUBLE;
3434
typedef UInt4 Oid;
3535

3636
/* Driver stuff */
37+
#ifndef ODBCVER
3738
#define ODBCVER 0x0250
39+
#endif
3840
#define DRIVER_ODBC_VER "02.50"
3941

4042
#define DRIVERNAME "PostgreSQL ODBC"

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy