summaryrefslogtreecommitdiff
path: root/storage/connect/myconn.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'storage/connect/myconn.cpp')
-rw-r--r--storage/connect/myconn.cpp43
1 files changed, 36 insertions, 7 deletions
diff --git a/storage/connect/myconn.cpp b/storage/connect/myconn.cpp
index 8700a24ac96..0c4b50f1d0b 100644
--- a/storage/connect/myconn.cpp
+++ b/storage/connect/myconn.cpp
@@ -364,7 +364,7 @@ PQRYRES SrcColumns(PGLOBAL g, const char *host, const char *db,
if (!port)
port = mysqld_port;
- if (!strnicmp(srcdef, "select ", 7)) {
+ if (!strnicmp(srcdef, "select ", 7)) {
query = (char *)PlugSubAlloc(g, NULL, strlen(srcdef) + 9);
strcat(strcpy(query, srcdef), " LIMIT 0");
} else
@@ -686,19 +686,48 @@ int MYSQLC::ExecSQL(PGLOBAL g, const char *query, int *w)
rc = RC_NF;
} // endif field count
-if (w)
-//*w = mysql_warning_count(m_DB);
- *w = m_DB->warning_count;
+ if (w)
+// *w = mysql_warning_count(m_DB);
+ *w = m_DB->warning_count;
return rc;
} // end of ExecSQL
/***********************************************************************/
+/* Get table size by executing "select count(*) from table_name". */
+/***********************************************************************/
+int MYSQLC::GetTableSize(PGLOBAL g, PSZ query)
+ {
+ if (mysql_real_query(m_DB, query, strlen(query))) {
+#if defined(_DEBUG)
+ char *msg = (char*)PlugSubAlloc(g, NULL, 512 + strlen(query));
+
+ sprintf(msg, "(%d) %s [%s]", mysql_errno(m_DB),
+ mysql_error(m_DB), query);
+ strncpy(g->Message, msg, sizeof(g->Message) - 1);
+ g->Message[sizeof(g->Message) - 1] = 0;
+#endif // _DEBUG
+ return -2;
+ } // endif mysql_real_query
+
+ if (!(m_Res = mysql_store_result(m_DB)))
+ return -3;
+
+ // Get the resulting count value
+ m_Rows = (int)mysql_num_rows(m_Res); // Should be 1
+
+ if (m_Rows && (m_Row = mysql_fetch_row(m_Res)))
+ return atoi(*m_Row);
+
+ return -4;
+ } // end of GetTableSize
+
+/***********************************************************************/
/* Move to a specific row and column */
/***********************************************************************/
void MYSQLC::DataSeek(my_ulonglong row)
{
- MYSQL_ROWS *tmp=0;
+ MYSQL_ROWS *tmp = 0;
//DBUG_PRINT("info",("mysql_data_seek(%ld)",(long) row));
if (m_Res->data)
@@ -873,7 +902,7 @@ PQRYRES MYSQLC::GetResult(PGLOBAL g, bool pdb)
else {
if (!*row && crp->Nulls)
crp->Nulls[n] = '*'; // Null value
-
+
crp->Kdata->Reset(n);
} // endelse *row
}
@@ -970,7 +999,7 @@ void MYSQLC::DiscardResults(void)
while (!mysql_next_result(m_DB)) {
res = mysql_store_result(m_DB);
mysql_free_result(res);
- } // endwhile next result
+ } // endwhile next result
} // end of DiscardResults
#endif // 0