Loading sql/ha_ndbcluster.cc +32 −8 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; Loading @@ -383,6 +383,7 @@ int ha_ndbcluster::records_update() if (get_thd_ndb(thd)->error) info->no_uncommitted_rows_count= 0; } if(result==0) records= info->records+ info->no_uncommitted_rows_count; DBUG_RETURN(result); } Loading Loading @@ -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; Loading Loading @@ -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); } Loading Loading @@ -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"); Loading Loading @@ -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); Loading @@ -6007,8 +6030,9 @@ ndb_get_table_statistics(Ndb* ndb, const char * table, } 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); } /* Loading sql/ha_ndbcluster.h +8 −2 Original line number Diff line number Diff line Loading @@ -583,6 +583,12 @@ static void set_tabname(const char *pathname, char *tabname); void cond_pop(); uint8 table_cache_type(); /* * Internal to ha_ndbcluster, used by C functions */ int ndb_err(NdbTransaction*); my_bool register_query_cache_table(THD *thd, char *table_key, uint key_length, qc_engine_callback *engine_callback, Loading Loading @@ -647,7 +653,7 @@ static void set_tabname(const char *pathname, char *tabname); ulonglong get_auto_increment(); void invalidate_dictionary_cache(bool global); int ndb_err(NdbTransaction*); bool uses_blob_value(bool all_fields); char *update_table_comment(const char * comment); Loading Loading
sql/ha_ndbcluster.cc +32 −8 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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; Loading @@ -383,6 +383,7 @@ int ha_ndbcluster::records_update() if (get_thd_ndb(thd)->error) info->no_uncommitted_rows_count= 0; } if(result==0) records= info->records+ info->no_uncommitted_rows_count; DBUG_RETURN(result); } Loading Loading @@ -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; Loading Loading @@ -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); } Loading Loading @@ -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"); Loading Loading @@ -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); Loading @@ -6007,8 +6030,9 @@ ndb_get_table_statistics(Ndb* ndb, const char * table, } 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); } /* Loading
sql/ha_ndbcluster.h +8 −2 Original line number Diff line number Diff line Loading @@ -583,6 +583,12 @@ static void set_tabname(const char *pathname, char *tabname); void cond_pop(); uint8 table_cache_type(); /* * Internal to ha_ndbcluster, used by C functions */ int ndb_err(NdbTransaction*); my_bool register_query_cache_table(THD *thd, char *table_key, uint key_length, qc_engine_callback *engine_callback, Loading Loading @@ -647,7 +653,7 @@ static void set_tabname(const char *pathname, char *tabname); ulonglong get_auto_increment(); void invalidate_dictionary_cache(bool global); int ndb_err(NdbTransaction*); bool uses_blob_value(bool all_fields); char *update_table_comment(const char * comment); Loading