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/MYSQLPlusLib | pharvey | 10 Aug |