| Bug #6033 | openschema (adSchemaColumns) fails above 4.0.17-nt | ||
|---|---|---|---|
| Submitted: | 11 Oct 2004 16:00 | Modified: | 16 Aug 2007 21:16 |
| Reporter: | Bernhard Schmidt | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | Connector / ODBC | Severity: | S3 (Non-critical) |
| Version: | 3.51 | OS: | Windows (XP) |
| Assigned to: | CPU Architecture: | Any | |
[11 Oct 2004 16:09]
Bernhard Schmidt
following Code Fails with 4.0.21 (working with 4.0.17):
with pscn.OpenSchema(adSchemaColumns, Array(Empty, Empty, Tablename,FieldName))
fieldExists = Not (.BOF Or .EOF)
following Code is working with both releases
Dim rs As ADODB.Recordset
Set rs = pscn.OpenSchema(adSchemaColumns, Array(Empty, Empty,Tablename, FieldName))
With rs
fieldExists = Not (.BOF Or .EOF)
[11 Oct 2004 20:25]
MySQL Verification Team
Showing Column Names from mysql.user
Attachment: testing-bug6033.PNG (image/png, text), 39.86 KiB.
[11 Oct 2004 20:29]
MySQL Verification Team
Hi, Running MySQL 4.0.21 version, using Access 2003 and the method openschema (adSchemaColumns) I was able for to get the column names from the table mysql.user. Please see attached figure using the Files tabs.
[12 Oct 2004 15:42]
Bernhard Schmidt
Hi, Miguel Solorzano
your scenario doesn't hit the bug:
- Yes, i can get with openschema and no field filtered all fields, (as you showed)
- No, i can't get an recordset back when filtering:
OpenSchema(adSchemaColumns, Array(Empty, Empty,Tablename,FieldName))
my shown code worked with 4.0.17-nt servers and switching to an 4.0.21-nt server, the recordset stayes empty
sincerly, Bernhard Schmidt
[12 Oct 2004 15:54]
MySQL Verification Team
Hi Bernhard, I misunderstood you so, could you please post a complete test case (table schema and some data and the VB code) such as I can to verify on Access (I don't have VB). Thanks
[12 Oct 2004 17:29]
Bernhard Schmidt
testcase; using the mysql/user-table as data
Attachment: testcase.bas (application/octet-stream, text), 825 bytes.
[14 Oct 2004 7:53]
Bernhard Schmidt
Testcase appended! Bernhard
[14 Oct 2004 14:36]
MySQL Verification Team
Thank for the test case.
[9 Mar 2005 10:05]
Andreas Krantz
The problem can be reproduced using the following VBS script.
Just save it to a file and it should be usable in almost any windows version.
Both Message boxes should contain table and column names.
option explicit
dim connectionString : connectionString = "DSN=mySQL;uid=mysql;pwd="
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Open ADO connection
Dim Conn : set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = connectionString
conn.Open
dim txt : txt = ""
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Done in the plugin
' Has to work to make the database available for the plugin
Dim ColumnSchema : Set ColumnSchema = Conn.OpenSchema(4)
Do While Not ColumnSchema.EOF
dim tblName : tblName = ColumnSchema("TABLE_NAME")
dim clName : clName = ColumnSchema("COLUMN_NAME")
txt = txt & tblName & "." & clName & "; "
ColumnSchema.MoveNext
Loop
MsgBox txt
txt = ""
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Another way
Dim TablesSchema : Set TablesSchema = Conn.OpenSchema(20) ' this line is also used in the plugin
Do While Not TablesSchema.EOF
dim tableName : tableName = TablesSchema("TABLE_NAME")
txt = txt & tableName & VBCRLF & " -> "
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Get all columns of the current table
Dim ColumnsSchema : Set ColumnsSchema = Conn.OpenSchema(4, Array(Empty, Empty, tableName))
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Add all channels
Do While Not ColumnsSchema.EOF
dim columnName : columnName = ColumnsSchema("COLUMN_NAME")
txt = txt & columnName & ";"
ColumnsSchema.MoveNext
Loop
txt = txt & VBCRLF
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Next table
TablesSchema.MoveNext
Loop
MsgBox txt
[20 Apr 2006 22:21]
Joep Oude Veldhuis
This bug still exists with ODBC Driver Version 3.51.12 and MySQL 5.0.20-nt-max-log. Bit puzzled by status S3 non-critical though, cause adSchemaTables and adSchemaColumns are quite essential (and I think one of few really required functions?). Does anyone know: is there a workaround and/or anything known about the timeframe needed to solve this bug?
[9 Aug 2007 17:48]
MySQL Verification Team
Could you please test with released version 3.51.18. Thanks in advance.
[10 Aug 2007 9:31]
Bernhard Schmidt
The subject seems to be fixed (after three years !!!). The testcase, when run against an 4.0.17-nt-Server can now retrieve the filtered recordset, as it did with older servers before. This should be checked by the other users also, because i have not other servers above 4.0.x running for testing.
[16 Aug 2007 21:16]
MySQL Verification Team
Thank you for the feedback.

Description: The openschema(adschemaColumns) doesnt recognize existing fields. This behaviour is NEW above 4.0.17-nt: 4.0.17 still works, 4.0.21 don't. How to repeat: VB6: Public Function fieldExists(ByVal Tablename$, ByVal FieldName$) With pscn.OpenSchema(adSchemaColumns, Array(Empty, Empty, Tablename, FieldName)) fieldExists = Not (.BOF Or .EOF) .Close End With End Function Tested with MyODBC 3.51.08 Client against 4.0.17-nt and 4.0.21-nt server (identic database) with similar connect: driver={MySQL ODBC 3.51 Driver};server=Laurin1;db=PS-IPAQ;user=root;option=17411;