diff options
author | unknown <stewart@willster.(none)> | 2006-10-23 23:57:28 +1000 |
---|---|---|
committer | unknown <stewart@willster.(none)> | 2006-10-23 23:57:28 +1000 |
commit | 399cd9f71651200edc8cc79f6d9d6c3c6be9c94a (patch) | |
tree | 90bbcca41806eb5b257f773c6bd0c6bc16845ffe /sql/ha_ndbcluster.cc | |
parent | 46152464aa27954659a028d625f82acc601b7bbe (diff) | |
parent | 8335ed7316e76f056dc763fd68aab9d7ca3fa8d9 (diff) | |
download | mariadb-git-399cd9f71651200edc8cc79f6d9d6c3c6be9c94a.tar.gz |
Merge willster.(none):/home/stewart/Documents/MySQL/4.1/bug19914-mk2-merge2
into willster.(none):/home/stewart/Documents/MySQL/5.0/ndb
sql/sql_select.cc:
Auto merged
sql/ha_ndbcluster.cc:
merge
sql/ha_ndbcluster.h:
merge
Diffstat (limited to 'sql/ha_ndbcluster.cc')
-rw-r--r-- | sql/ha_ndbcluster.cc | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index e9e2103cba7..22db54695e5 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -114,7 +114,7 @@ static int packfrm(const void *data, uint len, const void **pack_data, uint *pac static int unpackfrm(const void **data, uint *len, const void* pack_data); -static int ndb_get_table_statistics(Ndb*, const char *, +static int ndb_get_table_statistics(ha_ndbcluster*, bool, Ndb*, const char *, struct Ndb_statistics *); // Util thread variables @@ -372,7 +372,7 @@ int ha_ndbcluster::records_update() Ndb *ndb= get_ndb(); struct Ndb_statistics stat; ndb->setDatabaseName(m_dbname); - if ((result= ndb_get_table_statistics(ndb, m_tabname, &stat)) == 0){ + if ((result= ndb_get_table_statistics(ndb, true, m_tabname, &stat)) == 0){ mean_rec_length= stat.row_size; data_file_length= stat.fragment_memory; info->records= stat.row_count; @@ -383,7 +383,8 @@ int ha_ndbcluster::records_update() if (get_thd_ndb(thd)->error) info->no_uncommitted_rows_count= 0; } - records= info->records+ info->no_uncommitted_rows_count; + if(result==0) + records= info->records+ info->no_uncommitted_rows_count; DBUG_RETURN(result); } @@ -3118,7 +3119,7 @@ int ha_ndbcluster::info(uint flag) struct Ndb_statistics stat; ndb->setDatabaseName(m_dbname); if (current_thd->variables.ndb_use_exact_count && - (result= ndb_get_table_statistics(ndb, m_tabname, &stat)) == 0) + (result= ndb_get_table_statistics(ndb, true, m_tabname, &stat)) == 0) { mean_rec_length= stat.row_size; data_file_length= stat.fragment_memory; @@ -4756,7 +4757,15 @@ int ha_ndbcluster::open(const char *name, int mode, uint test_if_locked) res= get_metadata(name); if (!res) - info(HA_STATUS_VARIABLE | HA_STATUS_CONST); + { + Ndb *ndb= get_ndb(); + ndb->setDatabaseName(m_dbname); + Uint64 rows= 0; + res= ndb_get_table_statistics(NULL, false, ndb, m_tabname, &rows, 0); + records= rows; + if(!res) + res= info(HA_STATUS_CONST); + } DBUG_RETURN(res); } @@ -5899,12 +5908,13 @@ static int unpackfrm(const void **unpack_data, uint *unpack_len, static int -ndb_get_table_statistics(Ndb* ndb, const char * table, +ndb_get_table_statistics(ha_ndbcluster* file, bool report_error, Ndb* ndb, struct Ndb_statistics * ndbstat) { NdbTransaction* pTrans; NdbError error; int retries= 10; + int reterr= 0; int retry_sleep= 30 * 1000; /* 30 milliseconds */ char buff[22], buff2[22], buff3[22], buff4[22]; DBUG_ENTER("ndb_get_table_statistics"); @@ -5995,6 +6005,19 @@ ndb_get_table_statistics(Ndb* ndb, const char * table, DBUG_RETURN(0); retry: + if(report_error) + { + if (file) + { + reterr= file->ndb_err(pTrans); + } + else + { + const NdbError& tmp= error; + ERR_PRINT(tmp); + reterr= ndb_to_mysql_error(&tmp); + } + } if (pTrans) { ndb->closeTransaction(pTrans); @@ -6007,8 +6030,9 @@ retry: } break; } while(1); - DBUG_PRINT("exit", ("failed, error %u(%s)", error.code, error.message)); - ERR_RETURN(error); + DBUG_PRINT("exit", ("failed, reterr: %u, NdbError %u(%s)", reterr, + error.code, error.message)); + DBUG_RETURN(reterr); } /* |