[ psqlodbc-Bugs-1000620 ] SQLStatistics returns UNKNOWN instead of real column names
am 26.04.2006 19:24:48 von noreplyBugs item #1000620, was opened at 26-04-2006 17:24
You can respond by visiting:
http://pgfoundry.org/tracker/?func=detail&atid=538&aid=10006 20&group_id=1000125
Category: None
Group: None
Status: Open
Resolution: None
Priority: 3
Submitted By: Nobody (None)
Assigned to: Nobody (None)
Summary: SQLStatistics returns UNKNOWN instead of real column names
Initial Comment:
Created By: den
Description:
STEPS TO REPRODUCE
1. CREATE TABLE temp_table (a int)
2. ALTER TABLE temp_table DROP COLUMN a
3. ALTER TABLE temp_table ADD COLUMN a int
4. CREATE INDEX temp_index ON temp_table (a)
CAUSE OF FAILURE
Source code has a petty hole based on the erroneous interpretation of the
column index stored in the pg_index.indkey. In this case the column index is
not a sequence number of column, but value of the pg_attribute.attnum.
Listing of source code: info.c (psqlodbc-08.00.0102)
....
2824 if (fields_vector[i] == OID_ATTNUM)
2825 {
2826 set_tuplefield_string(&row->tuple[8], "oid");
2827 mylog("%s: column name = oid\n", func);
2828 }
->2829 else if (fields_vector[i] < 0 || fields_vector[i] > total_columns)
2830 {
2831 set_tuplefield_string(&row->tuple[8], "UNKNOWN");
2832 mylog("%s: column name = UNKNOWN\n", func);
2833 }
2834 else
2835 {
->2836 set_tuplefield_string(&row->tuple[8],
column_names[fields_vector[i] - 1]);
2837 mylog("%s: column name = '%s'\n", func,
column_names[fields_vector[i] - 1]);
2838 }
...
------------------------------------------------------------ ----------
You can respond by visiting:
http://pgfoundry.org/tracker/?func=detail&atid=538&aid=10006 20&group_id=1000125
---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match