List:Commits« Previous MessageNext Message »
From:pharvey Date:August 10 2006 3:46pm
Subject:Connector/ODBC 5 commit: r480 - trunk/MYSQLPlus/MYSQLPlusLib
View as plain text  
Modified:
   trunk/MYSQLPlus/MYSQLPlusLib/MResultPlus.cpp
   trunk/MYSQLPlus/MYSQLPlusLib/MResultPlus.h
   trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp
Log:
- SQLProcedures implemented (needs post-build tests)

Modified: trunk/MYSQLPlus/MYSQLPlusLib/MResultPlus.cpp
===================================================================
--- trunk/MYSQLPlus/MYSQLPlusLib/MResultPlus.cpp	2006-08-10 12:48:47 UTC (rev 479)
+++ trunk/MYSQLPlus/MYSQLPlusLib/MResultPlus.cpp	2006-08-10 13:46:58 UTC (rev 480)
@@ -679,8 +679,6 @@
         MYSQL_RES * pResult = NULL;
         MYSQL_ROW   pRow;
 
-        MYODBCDbgEnter();
-
         stringStatement = "SELECT COLUMN_NAME, SEQ_IN_INDEX "
                           "FROM   INFORMATION_SCHEMA.STATISTICS "
                           "WHERE  TABLE_SCHEMA='" + stringCatalog + "' AND TABLE_NAME='"
+ stringTable + "' AND INDEX_NAME='PRIMARY' "
@@ -847,8 +845,6 @@
         MYSQL_RES * pResult = NULL;
         MYSQL_ROW   pRow;
 
-        MYODBCDbgEnter();
-
         stringStatement = "SELECT * "
                           "FROM   INFORMATION_SCHEMA.STATISTICS "
                           "WHERE  TABLE_SCHEMA='" + stringCatalog + "' AND TABLE_NAME='"
+ stringTable + "' " + ( nUnique == SQL_INDEX_UNIQUE ? " AND NON_UNIQUE=0 " : " " );
@@ -1048,58 +1044,49 @@
     pDescriptor->doAppend( SQL_VARCHAR, "REMARKS", SQL_NULLABLE );
     pDescriptor->doAppend( SQL_SMALLINT, "PROCEDURE_TYPE", SQL_NO_NULLS );
 
-++++++++
+    {
+        QString     stringStatement;
+        MYSQL_RES * pResult = NULL;
+        MYSQL_ROW   pRow;
 
-    /* populate resultset */
-    /*!
-        \internal ODBC Rule
+        stringStatement = "SELECT   ROUTINE_SCHEMA  AS PROCEDURE_CAT,"
+                          "         ROUTINE_NAME    AS PROCEDURE_NAME,"
+                          "         ROUTINE_COMMENT AS REMARKS,"
+                          "         ROUTINE_TYPE    AS PROCEDURE_TYPE "
+                          "FROM     INFORMATION_SCHEMA.ROUTINES "
+                          "WHERE    ROUTINE_SCHEMA LIKE '" + stringCatalog + "' AND "
+                          "         ROUTINE_NAME   LIKE '" + stringProcedure + "' "
+                          "ORDER BY PROCEDURE_CAT, PROCEDURE_NAME";
 
-        If TableType is SQL_ALL_TABLE_TYPES and CatalogName, SchemaName, and TableName
are 
-        empty strings, the result set contains a list of valid table types for the data
source. 
-        (All columns except the TABLE_TYPE column contain NULLs.) 
-    */
-    if ( ( stringCatalog.isEmpty() && !stringCatalog.isNull() ) &&
-         ( stringSchema.isEmpty() && !stringSchema.isNull() ) &&
-         ( stringTable.isEmpty() && !stringTable.isNull() ) &&
-         stringTableType == SQL_ALL_TABLE_TYPES )
-    {
-        nReturn = doAppendTablesTableTypes();
-    }
-    /*!
-        \internal ODBC Rule
+        if ( mysql_query( getMySQL(), stringStatement.toUtf8().data() ) )
+            MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY000,
mysql_errno( getMySQL() ), mysql_error( getMySQL() ) ) );
 
-        If SchemaName is SQL_ALL_SCHEMAS and CatalogName and TableName are empty strings,
the result 
-        set contains a list of valid schemas for the data source. (All columns except the
TABLE_SCHEM 
-        column contain NULLs.) 
-    */
-    else if ( ( stringCatalog.isEmpty() && !stringCatalog.isNull() ) &&
-              stringSchema == SQL_ALL_SCHEMAS && 
-              ( stringTable.isEmpty() && !stringTable.isNull() ) )
-    {
-        nReturn = doAppendTablesSchemas();
-    }
-    /*!
-        \internal ODBC Rule
+        pResult = mysql_use_result( getMySQL() );
+        if ( !pResult )
+            MYODBCDbgReturn( getDiagnostic()->doAppend( MDiagnostic::DIA_HY000,
mysql_errno( getMySQL() ), mysql_error( getMySQL() ) ) );
 
-        If CatalogName is SQL_ALL_CATALOGS and SchemaName and TableName are empty
strings, the result set 
-        contains a list of valid catalogs for the data source. (All columns except the
TABLE_CAT column 
-        contain NULLs.) 
-    */
-    else if ( stringCatalog == SQL_ALL_CATALOGS &&
-              ( stringSchema.isEmpty() && !stringSchema.isNull() ) && 
-              ( stringTable.isEmpty() && !stringTable.isNull() )  )
-    {
-        nReturn = doAppendTablesCatalogs();
-    }
-    /*!
-        \internal ODBC Rule
+        while ( pRow = mysql_fetch_row( pResult ) )
+        {
+            SQLSMALLINT nType;
+            QString stringType( pRow[3] );
 
-        SQLTables returns the results as a standard result set, ordered by TABLE_TYPE,
TABLE_CAT, TABLE_SCHEM, 
-        and TABLE_NAME.
-    */
-    else
-    {
-        nReturn = doAppendTablesTableTypes( stringCatalog, stringSchema, stringTable,
stringTableType );
+            if ( stringType == "FUNCTION" )
+                nType = SQL_PT_FUNCTION;
+            else if ( stringType == "PROCEDURE" )
+                nType = SQL_PT_PROCEDURE;
+            else
+            {
+                getDiagnostic()->doAppend( MDiagnostic::DIA_01000, 0,  QString(
"Unhandled procedure type (%1)" ).arg( stringType ) );
+                nType = SQL_PT_UNKNOWN;
+            }
+
+            doAppendProcedures( pRow[0],    // catalog - we put MySQL schema in here
+                                pRow[1],    // procedure name
+                                pRow[2],    // remarks
+                                nType );    // type
+        }
+
+        mysql_free_result( pResult ); 
     }
 
     /*!
@@ -1127,7 +1114,7 @@
     setState( STATE_EXECUTED );
     doNext();
 
-    MYODBCDbgReturn( nReturn );
+    MYODBCDbgReturn( SQL_SUCCESS );
 }
 
 BOOLEAN MResultPlus::isValidRow()
@@ -2765,4 +2752,25 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
+SQLRETURN MResultPlus::doAppendProcedures( const QVariant &variantCatalog,
+                                           const QVariant &variantProcedure,
+                                           const QVariant &variantRemarks,
+                                           const QVariant &variantType )
+{
+    MYODBCDbgEnter();
 
+    doAppend();
+
+    setData( 1, variantCatalog );
+    setData( 2, "" );
+    setData( 3, variantProcedure );
+    /*       4 = null */
+    /*       5 = null */
+    /*       6 = null */
+    setData( 7, variantRemarks );
+    setData( 8, variantType );
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+

Modified: trunk/MYSQLPlus/MYSQLPlusLib/MResultPlus.h
===================================================================
--- trunk/MYSQLPlus/MYSQLPlusLib/MResultPlus.h	2006-08-10 12:48:47 UTC (rev 479)
+++ trunk/MYSQLPlus/MYSQLPlusLib/MResultPlus.h	2006-08-10 13:46:58 UTC (rev 480)
@@ -227,6 +227,10 @@
                                   const QVariant &variantColumn,
                                   const QVariant &variantAscDesc,
                                   const QVariant &variantCardinality );
+    SQLRETURN doAppendProcedures( const QVariant &variantCatalog,
+                                  const QVariant &variantProcedure,
+                                  const QVariant &variantRemarks,
+                                  const QVariant &variantType );
 };
 
 #endif

Modified: trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp
===================================================================
--- trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-08-10 12:48:47 UTC (rev 479)
+++ trunk/MYSQLPlus/MYSQLPlusLib/MStatement.cpp	2006-08-10 13:46:58 UTC (rev 480)
@@ -3515,7 +3515,7 @@
     MYODBCDbgReturn( SQL_ERROR );
 }
 
-SQLRETURN MStatement::doProcedures( SQLWCHAR *psCatalogName, SQLSMALLINT nLength1,
SQLWCHAR *psSchemaName, SQLSMALLINT nLength2, SQLWCHAR *psProcName, SQLSMALLINT nLength3
)
+SQLRETURN MStatement::doProcedures( SQLWCHAR *psCatalog, SQLSMALLINT nLength1, SQLWCHAR
*psSchema, SQLSMALLINT nLength2, SQLWCHAR *psProcedure, SQLSMALLINT nLength3 )
 {
     MYODBCDbgEnter();
 

Thread
Connector/ODBC 5 commit: r480 - trunk/MYSQLPlus/MYSQLPlusLibpharvey10 Aug