Kouhei Sutou
kou****@clear*****
Tue Mar 22 19:14:25 JST 2016
"recursive"じゃないので"recursive"という単語を意図的に避けて いたんですが、"recursive"と説明した方がよさそうでしょうか? In <242250d3f9a8fe3f13ba8347b25c0aafd27b878f �� jenkins.clear-code.com> "[Groonga-commit] groonga/groonga �� 242250d [master] Describe "table_remove" with more meaningful examples" on Tue, 22 Mar 2016 18:24:34 +0900, YUKI Hiroshi <null+groonga �� clear-code.com> wrote: > YUKI Hiroshi 2016-03-22 18:24:34 +0900 (Tue, 22 Mar 2016) > > New Revision: 242250d3f9a8fe3f13ba8347b25c0aafd27b878f > https://github.com/groonga/groonga/commit/242250d3f9a8fe3f13ba8347b25c0aafd27b878f > > Message: > Describe "table_remove" with more meaningful examples > > Modified files: > doc/source/example/reference/commands/table_remove/remove_dependents_default.log > doc/source/example/reference/commands/table_remove/remove_dependents_schema.log > doc/source/example/reference/commands/table_remove/remove_dependents_yes.log > doc/source/example/reference/commands/table_remove/unremovable_cases_key_type_create.log > doc/source/example/reference/commands/table_remove/unremovable_cases_key_type_remove_fail.log > doc/source/example/reference/commands/table_remove/unremovable_cases_key_type_remove_success.log > doc/source/example/reference/commands/table_remove/unremovable_cases_value_type_create.log > doc/source/example/reference/commands/table_remove/unremovable_cases_value_type_remove_fail.log > doc/source/example/reference/commands/table_remove/unremovable_cases_value_type_remove_success.log > doc/source/reference/commands/table_remove.rst > > Modified: doc/source/example/reference/commands/table_remove/remove_dependents_default.log (+2 -2) > =================================================================== > --- doc/source/example/reference/commands/table_remove/remove_dependents_default.log 2016-03-22 18:22:30 +0900 (3639ead) > +++ doc/source/example/reference/commands/table_remove/remove_dependents_default.log 2016-03-22 18:24:34 +0900 (eb4d5df) > @@ -1,12 +1,12 @@ > Execution example:: > > - table_remove ReferencedTable > + table_remove UserId > # [ > # [ > # -2, > # 1337566253.89858, > # 0.000355720520019531, > - # "[table][remove] a table that references the table exists: <Table1._key> -> <ReferencedTable>", > + # "[table][remove] a table that references the table exists: <AdminUser._key> -> <UserId>", > # [ > # [ > # "is_removable_table", > > Modified: doc/source/example/reference/commands/table_remove/remove_dependents_schema.log (+4 -4) > =================================================================== > --- doc/source/example/reference/commands/table_remove/remove_dependents_schema.log 2016-03-22 18:22:30 +0900 (463ecf1) > +++ doc/source/example/reference/commands/table_remove/remove_dependents_schema.log 2016-03-22 18:24:34 +0900 (3e8129d) > @@ -1,10 +1,10 @@ > Execution example:: > > - table_create ReferencedTable TABLE_HASH_KEY ShortText > + table_create UserId TABLE_HASH_KEY ShortText > # [[0, 1337566253.89858, 0.000355720520019531], true] > - table_create Table1 TABLE_HASH_KEY ReferencedTable > + table_create AdminUser TABLE_HASH_KEY UserId > # [[0, 1337566253.89858, 0.000355720520019531], true] > - table_create Table2 TABLE_NO_KEY > + table_create GeneralUser TABLE_NO_KEY > # [[0, 1337566253.89858, 0.000355720520019531], true] > - column_create Table2 reference_column COLUMN_SCALAR ReferencedTable > + column_create GeneralUser id COLUMN_SCALAR UserId > # [[0, 1337566253.89858, 0.000355720520019531], true] > > Modified: doc/source/example/reference/commands/table_remove/remove_dependents_yes.log (+1 -1) > =================================================================== > --- doc/source/example/reference/commands/table_remove/remove_dependents_yes.log 2016-03-22 18:22:30 +0900 (352a6db) > +++ doc/source/example/reference/commands/table_remove/remove_dependents_yes.log 2016-03-22 18:24:34 +0900 (5aaf9b6) > @@ -1,4 +1,4 @@ > Execution example:: > > - table_remove ReferencedTable --dependent yes > + table_remove UserId --dependent yes > # [[0, 1337566253.89858, 0.000355720520019531], true] > > Modified: doc/source/example/reference/commands/table_remove/unremovable_cases_key_type_create.log (+2 -2) > =================================================================== > --- doc/source/example/reference/commands/table_remove/unremovable_cases_key_type_create.log 2016-03-22 18:22:30 +0900 (57d9e4a) > +++ doc/source/example/reference/commands/table_remove/unremovable_cases_key_type_create.log 2016-03-22 18:24:34 +0900 (c4698fc) > @@ -1,6 +1,6 @@ > Execution example:: > > - table_create ReferencedByTable TABLE_HASH_KEY ShortText > + table_create UserId TABLE_HASH_KEY ShortText > # [[0, 1337566253.89858, 0.000355720520019531], true] > - table_create ReferenceTable TABLE_HASH_KEY ReferencedByTable > + table_create AdminUser TABLE_HASH_KEY UserId > # [[0, 1337566253.89858, 0.000355720520019531], true] > > Modified: doc/source/example/reference/commands/table_remove/unremovable_cases_key_type_remove_fail.log (+2 -2) > =================================================================== > --- doc/source/example/reference/commands/table_remove/unremovable_cases_key_type_remove_fail.log 2016-03-22 18:22:30 +0900 (6be7b00) > +++ doc/source/example/reference/commands/table_remove/unremovable_cases_key_type_remove_fail.log 2016-03-22 18:24:34 +0900 (eb4d5df) > @@ -1,12 +1,12 @@ > Execution example:: > > - table_remove ReferencedByTable > + table_remove UserId > # [ > # [ > # -2, > # 1337566253.89858, > # 0.000355720520019531, > - # "[table][remove] a table that references the table exists: <ReferenceTable._key> -> <ReferencedByTable>", > + # "[table][remove] a table that references the table exists: <AdminUser._key> -> <UserId>", > # [ > # [ > # "is_removable_table", > > Modified: doc/source/example/reference/commands/table_remove/unremovable_cases_key_type_remove_success.log (+2 -2) > =================================================================== > --- doc/source/example/reference/commands/table_remove/unremovable_cases_key_type_remove_success.log 2016-03-22 18:22:30 +0900 (64711f5) > +++ doc/source/example/reference/commands/table_remove/unremovable_cases_key_type_remove_success.log 2016-03-22 18:24:34 +0900 (57075cb) > @@ -1,6 +1,6 @@ > Execution example:: > > - table_remove ReferenceTable > + table_remove AdminUser > # [[0, 1337566253.89858, 0.000355720520019531], true] > - table_remove ReferencedByTable > + table_remove UserId > # [[0, 1337566253.89858, 0.000355720520019531], true] > > Modified: doc/source/example/reference/commands/table_remove/unremovable_cases_value_type_create.log (+3 -3) > =================================================================== > --- doc/source/example/reference/commands/table_remove/unremovable_cases_value_type_create.log 2016-03-22 18:22:30 +0900 (bfc297e) > +++ doc/source/example/reference/commands/table_remove/unremovable_cases_value_type_create.log 2016-03-22 18:24:34 +0900 (3de8d33) > @@ -1,8 +1,8 @@ > Execution example:: > > - table_create ReferencedByColumn TABLE_HASH_KEY ShortText > + table_create UserId TABLE_HASH_KEY ShortText > # [[0, 1337566253.89858, 0.000355720520019531], true] > - table_create Table TABLE_NO_KEY > + table_create GeneralUser TABLE_NO_KEY > # [[0, 1337566253.89858, 0.000355720520019531], true] > - column_create Table reference_column COLUMN_SCALAR ReferencedByColumn > + column_create GeneralUser id COLUMN_SCALAR UserId > # [[0, 1337566253.89858, 0.000355720520019531], true] > > Modified: doc/source/example/reference/commands/table_remove/unremovable_cases_value_type_remove_fail.log (+2 -2) > =================================================================== > --- doc/source/example/reference/commands/table_remove/unremovable_cases_value_type_remove_fail.log 2016-03-22 18:22:30 +0900 (68c6360) > +++ doc/source/example/reference/commands/table_remove/unremovable_cases_value_type_remove_fail.log 2016-03-22 18:24:34 +0900 (071e51d) > @@ -1,12 +1,12 @@ > Execution example:: > > - table_remove ReferencedByColumn > + table_remove UserId > # [ > # [ > # -2, > # 1337566253.89858, > # 0.000355720520019531, > - # "[table][remove] a column that references the table exists: <Table.reference_column> -> <ReferencedByColumn>", > + # "[table][remove] a column that references the table exists: <GeneralUser.id> -> <ReferencedByColumn>", > # [ > # [ > # "is_removable_table", > > Modified: doc/source/example/reference/commands/table_remove/unremovable_cases_value_type_remove_success.log (+2 -2) > =================================================================== > --- doc/source/example/reference/commands/table_remove/unremovable_cases_value_type_remove_success.log 2016-03-22 18:22:30 +0900 (a7130e2) > +++ doc/source/example/reference/commands/table_remove/unremovable_cases_value_type_remove_success.log 2016-03-22 18:24:34 +0900 (1bbdc3e) > @@ -1,6 +1,6 @@ > Execution example:: > > - column_remove Table reference_column > + column_remove GeneralUser id > # [[0, 1337566253.89858, 0.000355720520019531], true] > - table_remove ReferencedByColumn > + table_remove UserId > # [[0, 1337566253.89858, 0.000355720520019531], true] > > Modified: doc/source/reference/commands/table_remove.rst (+60 -58) > =================================================================== > --- doc/source/reference/commands/table_remove.rst 2016-03-22 18:22:30 +0900 (26d0300) > +++ doc/source/reference/commands/table_remove.rst 2016-03-22 18:24:34 +0900 (4577a87) > @@ -17,8 +17,10 @@ removed. > > .. versionadded:: 6.0.1 > > - You can also remove tables and columns that reference the target > - table by using ``dependent`` parameter. > + This command removes tables and columns recursively, with the > + ``dependent`` parameter. If you specify ``--dependent yes``, > + then other tables and columns depending on the disappearing table > + are also removed recursively. > > Syntax > ------ > @@ -34,15 +36,15 @@ Usage > ----- > > You just specify table name that you want to remove. ``table_remove`` > -removes the table and its columns. If the table and its columns are > -indexed, all index columns for the table and its columns are also > -removed. > +removes the specified table and its columns. If the table and its > +columns are indexed, all index columns for the table and its columns > +are also removed. > > This section describes about the followings: > > * Basic usage > * Unremovable cases > - * Removes a table with tables and columns that reference the target table > + * Recursive removing of tables and columns > * Decreases used resources > > .. _table-remove-basic-usage: > @@ -87,8 +89,8 @@ Let's confirm the current schema before running ``table_remove``: > .. include:: ../../example/reference/commands/table_remove/basic_usage_dump_before_table_remove.log > .. dump > > -If you remove ``Entries`` table, the following tables and columns are > -removed: > +If you remove the ``Entries`` table, the following tables and columns > +are removed: > > * ``Entries`` > * ``Entries.title`` > @@ -96,7 +98,7 @@ removed: > * ``EntryKeys.key_index`` > * ``Terms.content_index`` > > -The following tables (lexicons) aren't removed: > +The following tables (lexicons) are left: > > * ``EntryKeys`` > * ``Terms`` > @@ -119,102 +121,102 @@ Here is schema after ``table_remove``. Only ``EntryKeys`` and > Unremovable cases > ^^^^^^^^^^^^^^^^^ > > -There are some unremovable cases: > - > - * One or more tables use the table as key type. > - * One or more columns use the table as value type. > +You cannot remove a table, if there is any other table or column > +depending on it. In other words, any table satisfying one or more > +following conditions is unremovable. > > -Both cases blocks dangling references. If the table is referenced as > -type and the table is removed, tables and columns that refer the table > -are broken. > + * One or more tables use the table as their key type. > + * One or more columns use the table as their value type. > > -If the target table satisfies one of them, ``table_remove`` is > -failed. The target table and its columns aren't removed. > +To avoid breaking of left tables with missing references, > +``table_remove`` fails for such a depended (referenced) table. > > -Here is an example for the table is used as key type case. > +Here is an example for a table which is used as key type. > > -The following commands create a table to be removed and a table that > -uses the table to be removed as key type: > +The following commands create a table ``UserId`` going to be removed > +and another table ``AdminUser` depending on the first table via its key > +type: > > .. groonga-command > .. include:: ../../example/reference/commands/table_remove/unremovable_cases_key_type_create.log > -.. table_create ReferencedByTable TABLE_HASH_KEY ShortText > -.. table_create ReferenceTable TABLE_HASH_KEY ReferencedByTable > +.. table_create UserId TABLE_HASH_KEY ShortText > +.. table_create AdminUser TABLE_HASH_KEY UserId > > -``table_remove`` against ``ReferencedByTable`` is failed: > +``table_remove`` against ``UserId`` fails: > > .. groonga-command > .. include:: ../../example/reference/commands/table_remove/unremovable_cases_key_type_remove_fail.log > -.. table_remove ReferencedByTable > +.. table_remove UserId > > -You need to remove ``ReferenceTable`` before you remove > -``ReferencedByTable``: > +You need to remove ``AdminUser`` before ``UserId``: > > .. groonga-command > .. include:: ../../example/reference/commands/table_remove/unremovable_cases_key_type_remove_success.log > -.. table_remove ReferenceTable > -.. table_remove ReferencedByTable > +.. table_remove AdminUser > +.. table_remove UserId > > -Here is an example for the table is used as value type case. > +Here is another example for a table which is used as value type. > > -The following commands create a table to be removed and a column that > -uses the table to be removed as value type: > +The following commands create a table ``UserId`` going to be removed > +and another table ``GeneralUser`` with a column depending on the first > +table via its value type: > > .. groonga-command > .. include:: ../../example/reference/commands/table_remove/unremovable_cases_value_type_create.log > -.. table_create ReferencedByColumn TABLE_HASH_KEY ShortText > -.. table_create Table TABLE_NO_KEY > -.. column_create Table reference_column COLUMN_SCALAR ReferencedByColumn > +.. table_create UserId TABLE_HASH_KEY ShortText > +.. table_create GeneralUser TABLE_NO_KEY > +.. column_create GeneralUser id COLUMN_SCALAR UserId > > -``table_remove`` against ``ReferencedByColumn`` is failed: > +``table_remove`` against ``UserId`` fails: > > .. groonga-command > .. include:: ../../example/reference/commands/table_remove/unremovable_cases_value_type_remove_fail.log > -.. table_remove ReferencedByColumn > +.. table_remove UserId > > -You need to remove ``Table.reference_column`` before you remove > -``ReferencedByColumn``: > +You need to remove ``GeneralUser.id`` before ``UserId``: > > .. groonga-command > .. include:: ../../example/reference/commands/table_remove/unremovable_cases_value_type_remove_success.log > -.. column_remove Table reference_column > -.. table_remove ReferencedByColumn > +.. column_remove GeneralUser id > +.. table_remove UserId > > .. _table-remove-remove-dependents: > > -Removes a table with tables and columns that reference the target table > -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > +Recursive removing of tables and columns > +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > .. versionadded:: 6.0.1 > > -If you understand what you'll do, you can also remove tables and > -columns that reference the target table with one ``table_remove`` > -command by using ``--dependent yes`` parameter. > +If you understand what you'll do, you can remove a table and other > +tables depending on it together at a time, by the ``--dependent yes`` > +parameter. > > -``ReferencedTable`` in the following schema is referenced from a table > +``UserId`` in the following schema is referenced from a table > and a column: > > .. groonga-command > .. include:: ../../example/reference/commands/table_remove/remove_dependents_schema.log > -.. table_create ReferencedTable TABLE_HASH_KEY ShortText > -.. table_create Table1 TABLE_HASH_KEY ReferencedTable > -.. table_create Table2 TABLE_NO_KEY > -.. column_create Table2 reference_column COLUMN_SCALAR ReferencedTable > +.. table_create UserId TABLE_HASH_KEY ShortText > +.. table_create AdminUser TABLE_HASH_KEY UserId > +.. table_create GeneralUser TABLE_NO_KEY > +.. column_create GeneralUser id COLUMN_SCALAR UserId > > -You can't remove ``ReferencedTable`` by default: > +You can't remove ``UserId`` by default: > > .. groonga-command > .. include:: ../../example/reference/commands/table_remove/remove_dependents_default.log > -.. table_remove ReferencedTable > +.. table_remove UserId > > -You can remove ``ReferencedTable``, ``Table1`` and > -``Table2.reference_column`` by using ``--dependent yes`` > -parameter. ``Table1`` and ``Table2.reference_column`` reference > -``ReferencedTable``: > +Additional parameter ``--dependent yes`` for the command line allows > +you to remove the ``UserId`` table, then both ``AdminUser`` and > +``GeneralUser.id`` depending on the ``UserId`` are also removed at a > +time: > > .. groonga-command > .. include:: ../../example/reference/commands/table_remove/remove_dependents_yes.log > -.. table_remove ReferencedTable --dependent yes > +.. table_remove UserId --dependent yes > + > +After all, only the independent ``GeneralUser`` table is left. > > .. _table-remove-decreases-used-resources: >