@@ -8066,6 +8066,42 @@ int ha_rocksdb::open(const char *const name, int mode, uint test_if_locked,
80668066 */
80678067 key_used_on_scan = table->s->primary_key;
80688068
8069+ uint n_keys = table->s->keys + (has_hidden_pk(*table) ? 1 : 0);
8070+
8071+ if (m_tbl_def->m_key_count != n_keys) {
8072+ LogPluginErrMsg(ERROR_LEVEL, 0,
8073+ "Table '%s' definition mismatch between MyRocks "
8074+ "(m_key_count=%d) and data dictionary (n_keys=%d)",
8075+ m_tbl_def->full_tablename().c_str(), m_tbl_def->m_key_count,
8076+ n_keys);
8077+
8078+ for (uint i = 0; i < table->s->keys; i++) {
8079+ const char *key_name;
8080+ assert((*table).key_info != nullptr);
8081+ assert((*table).key_info[i].name != nullptr);
8082+ key_name = (*table).key_info[i].name;
8083+
8084+ LogPluginErrMsg(
8085+ ERROR_LEVEL, 0,
8086+ "ha_rocksdb::open TABLE table_name=%s i=%d/%d key_name=%s",
8087+ table->s->table_name.str, i, table->s->keys, key_name);
8088+ }
8089+
8090+ uint pk = table->s->primary_key;
8091+ LogPluginErrMsg(
8092+ ERROR_LEVEL, 0, "ha_rocksdb::open TABLE PK key_name=%s",
8093+ pk == MAX_INDEXES ? HIDDEN_PK_NAME : (*table).key_info[pk].name);
8094+
8095+ for (uint i = 0; i < m_tbl_def->m_key_count; i++) {
8096+ const char *rdb_name = m_tbl_def->m_key_descr_arr[i]->m_name.c_str();
8097+ LogPluginErrMsg(
8098+ ERROR_LEVEL, 0,
8099+ "ha_rocksdb::open KEY_descr_arr table_name=%s i=%d/%d key_name=%s",
8100+ m_tbl_def->full_tablename().c_str(), i, m_tbl_def->m_key_count,
8101+ rdb_name);
8102+ }
8103+ }
8104+
80698105 // close() above has already called free_key_buffers(). No need to do it here.
80708106 err = alloc_key_buffers(*table, *m_tbl_def);
80718107
0 commit comments