[groonga-dev,02035] テーブル参照のインデックスがあるMroongaのテーブルに対するALTER TABLEについて

Back to archive index

Naoya Murakami visio****@gmail*****
2014年 1月 7日 (火) 12:49:18 JST


お世話になっております。村上です。

テーブル参照先のカラムに対するインデックスがあるMroongaのテーブルに
対して、カラムの追加、削除等をするためにALTER TABLEすると、以下
のメッセージが発生しテーブル定義の変更ができません。

#1005 - [table][remove] a column that references the table exists:
<Bugs.tags> -> <Tags>

以下のログをみると、ALTER TABLEで#sqlから始まる一時テーブルを
つくる際に参照先テーブル(Tags)にインデックスを作ろうとして、すでに
参照先テーブル(Tags)に同じインデックスがあると言われて怒られている
ようです。

このため、テーブル定義を修正する場合、(1)一時データベースにデータ退避、
(2)元データベースを削除、(3)元データベースを再作成してテーブルを再定義、
(4)再定義したテーブルにデータを入れ直すという運用をしています。

もしくは、テーブル参照型のインデックスを全部削除してから、ALTER TABLE
でテーブル定義を修正して、テーブル参照型のインデックスを追加するという
方法でも対応可能かもしれません。(これは数が多いのでやりませんが。。)

しかしながら、これらはなかなかに面倒なので、もし、GroongaかMroonga側
で対応が可能であれば、簡単にカラム追加、削除等ができて助かります。
難しければ、従来の運用をやるので大丈夫です!

余談ですが、インデックス再構築なしでMroongaテーブルのカラム追加、削除
ができると最高だなぁと思ったりします。
(テーブルサイズが非常に大きいとカラムを1つ追加するのにも、全インデックス
再構築になりすごく大変で。。)

<再現SQL>
CREATE TABLE Tags (
name VARCHAR(64) PRIMARY KEY
) ENGINE=mroonga DEFAULT CHARSET=utf8
COLLATE=utf8_bin
COMMENT='default_tokenizer "TokenDelimit"';

CREATE TABLE Bugs (
id INT UNSIGNED PRIMARY KEY,
tags VARCHAR(40) COMMENT 'type "Tags", flags "COLUMN_VECTOR"',
FULLTEXT INDEX bugs_tags_index (tags) COMMENT 'table "Tags"'
) ENGINE=mroonga DEFAULT CHARSET=utf8;

ALTER TABLE Bugs ADD ex_tag VARCHAR(40);

<Groongaログ>
2014-01-07 11:19:18.519021|n|3df8e700|DDL:table_create #sql-45c5_1191
2014-01-07 11:19:18.519804|n|3df8e700|DDL:column_create #sql-45c5_1191 id
2014-01-07 11:19:18.520201|n|3df8e700|DDL:column_create #sql-45c5_1191 tags
2014-01-07 11:19:18.520873|n|3df8e700|DDL:column_create #sql-45c5_1191
ex_tag
2014-01-07 11:19:18.521535|n|3df8e700|DDL:column_create Tags bugs_tags_index
2014-01-07 11:19:18.521563|e|3df8e700|already used name was assigned:
<Tags.bugs_tags_index>
2014-01-07
11:19:18.525916|e|3df8e700|/usr/lib64/libgroonga.so.0(grn_obj_register+0x26e)
[0x7f39bcb1fd3e]
2014-01-07
11:19:18.525933|e|3df8e700|/usr/lib64/libgroonga.so.0(grn_column_create+0x18e)
[0x7f39bcb39a4e]
2014-01-07
11:19:18.525942|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga20storage_create_indexEP5TABLEPKcP8_grn_objP16st_mroonga_shareP6st_keyPS5_SA_j+0x195)
[0x7f386cabbb25]
2014-01-07
11:19:18.525951|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga22storage_create_indexesEP5TABLEPKcP8_grn_objP16st_mroonga_share+0xba)
[0x7f386cabbeea]
2014-01-07
11:19:18.525959|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga14storage_createEPKcP5TABLEP24st_ha_create_informationP16st_mroonga_share+0x56b)
[0x7f386cac7e2b]
2014-01-07
11:19:18.525975|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga6createEPKcP5TABLEP24st_ha_create_information+0x84)
[0x7f386cac80d4]
2014-01-07
11:19:18.525984|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z15ha_create_tableP3THDPKcS2_S2_P24st_ha_create_informationbb+0x254)
[0x593414]
2014-01-07
11:19:18.525992|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z17mysql_alter_tableP3THDPcS1_P24st_ha_create_informationP10TABLE_LISTP10Alter_infojP8st_orderb+0x24d2)
[0x726ed2]
2014-01-07
11:19:18.525999|e|3df8e700|/usr/local/mysql/bin/mysqld(_ZN19Sql_cmd_alter_table7executeEP3THD+0x43c)
[0x81a9cc]
2014-01-07
11:19:18.526007|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z21mysql_execute_commandP3THD+0x1a24)
[0x6d3824]
2014-01-07
11:19:18.526014|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z11mysql_parseP3THDPcjP12Parser_state+0x4c7)
[0x6d6d47]
2014-01-07
11:19:18.526022|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z16dispatch_command19enum_server_commandP3THDPcj+0x189c)
[0x6d86dc]
2014-01-07
11:19:18.526029|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z24do_handle_one_connectionP3THD+0x10d)
[0x6a0b2d]
2014-01-07
11:19:18.526036|e|3df8e700|/usr/local/mysql/bin/mysqld(handle_one_connection+0x42)
[0x6a0c62]
2014-01-07
11:19:18.526044|e|3df8e700|/usr/local/mysql/bin/mysqld(pfs_spawn_thread+0x127)
[0xafa567]
2014-01-07 11:19:18.526051|e|3df8e700|/lib64/libpthread.so.0()
[0x3c55e07851]
2014-01-07 11:19:18.526060|n|3df8e700|DDL:obj_remove Tags
2014-01-07 11:19:18.526115|e|3df8e700|[table][remove] a column that
references the table exists: <Bugs.tags> -> <Tags>
2014-01-07 11:19:18.529977|e|3df8e700|/usr/lib64/libgroonga.so.0(+0x51013)
[0x7f39bcb38013]
2014-01-07 11:19:18.529994|e|3df8e700|/usr/lib64/libgroonga.so.0(+0x52661)
[0x7f39bcb39661]
2014-01-07 11:19:18.530002|e|3df8e700|/usr/lib64/libgroonga.so.0(+0x5179d)
[0x7f39bcb3879d]
2014-01-07
11:19:18.530009|e|3df8e700|/usr/lib64/libgroonga.so.0(grn_obj_remove+0xbb)
[0x7f39bcb3927b]
2014-01-07
11:19:18.530017|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga20storage_create_indexEP5TABLEPKcP8_grn_objP16st_mroonga_shareP6st_keyPS5_SA_j+0x1bb)
[0x7f386cabbb4b]
2014-01-07
11:19:18.530024|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga22storage_create_indexesEP5TABLEPKcP8_grn_objP16st_mroonga_share+0xba)
[0x7f386cabbeea]
2014-01-07
11:19:18.530031|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga14storage_createEPKcP5TABLEP24st_ha_create_informationP16st_mroonga_share+0x56b)
[0x7f386cac7e2b]
2014-01-07
11:19:18.530039|e|3df8e700|/usr/local/mysql/lib/plugin/ha_mroonga.so(_ZN10ha_mroonga6createEPKcP5TABLEP24st_ha_create_information+0x84)
[0x7f386cac80d4]
2014-01-07
11:19:18.530046|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z15ha_create_tableP3THDPKcS2_S2_P24st_ha_create_informationbb+0x254)
[0x593414]
2014-01-07
11:19:18.530053|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z17mysql_alter_tableP3THDPcS1_P24st_ha_create_informationP10TABLE_LISTP10Alter_infojP8st_orderb+0x24d2)
[0x726ed2]
2014-01-07
11:19:18.530061|e|3df8e700|/usr/local/mysql/bin/mysqld(_ZN19Sql_cmd_alter_table7executeEP3THD+0x43c)
[0x81a9cc]
2014-01-07
11:19:18.530068|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z21mysql_execute_commandP3THD+0x1a24)
[0x6d3824]
2014-01-07
11:19:18.530075|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z11mysql_parseP3THDPcjP12Parser_state+0x4c7)
[0x6d6d47]
2014-01-07
11:19:18.530082|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z16dispatch_command19enum_server_commandP3THDPcj+0x189c)
[0x6d86dc]
2014-01-07
11:19:18.530089|e|3df8e700|/usr/local/mysql/bin/mysqld(_Z24do_handle_one_connectionP3THD+0x10d)
[0x6a0b2d]
2014-01-07
11:19:18.530096|e|3df8e700|/usr/local/mysql/bin/mysqld(handle_one_connection+0x42)
[0x6a0c62]
2014-01-07 11:19:18.530114|n|3df8e700|DDL:obj_remove Tags
2014-01-07 11:19:18.530160|n|3df8e700|DDL:obj_remove #sql-45c5_1191
2014-01-07 11:19:18.530210|n|3df8e700|DDL:obj_remove #sql-45c5_1191.ex_tag
2014-01-07 11:19:18.530434|n|3df8e700|DDL:obj_remove #sql-45c5_1191.id
2014-01-07 11:19:18.530505|n|3df8e700|DDL:obj_remove #sql-45c5_1191.tags
2014-01-07 11:19:18.530789|n|3df8e700|(1 same messages are truncated)


以上、よろしくお願いします。



groonga-dev メーリングリストの案内
Back to archive index