[Groonga-commit] groonga/groonga at ef905ce [master] grndb: add "can't open object" check

Back to archive index

Kouhei Sutou null+****@clear*****
Mon Nov 2 18:25:47 JST 2015


Kouhei Sutou	2015-11-02 18:25:47 +0900 (Mon, 02 Nov 2015)

  New Revision: ef905cec2439b5b896c0707b538412a3901852c1
  https://github.com/groonga/groonga/commit/ef905cec2439b5b896c0707b538412a3901852c1

  Message:
    grndb: add "can't open object" check

  Added files:
    lib/mrb/scripts/id.rb
  Modified files:
    lib/mrb/scripts/command_line/grndb.rb
    lib/mrb/scripts/initialize/post.rb
    lib/mrb/scripts/sources.am

  Modified: lib/mrb/scripts/command_line/grndb.rb (+20 -0)
===================================================================
--- lib/mrb/scripts/command_line/grndb.rb    2015-11-02 17:55:08 +0900 (96a99c8)
+++ lib/mrb/scripts/command_line/grndb.rb    2015-11-02 18:25:47 +0900 (c0f9c53)
@@ -129,6 +129,19 @@ module Groonga
           @succeeded = false
         end
 
+        open_cursor(database) do |cursor|
+          cursor.each do |id|
+            next if ID.builtin?(id)
+            next context[id]
+            message =
+              "[#{cursor.key}] Can't open object. " +
+              "It's broken. " +
+              "Re-create the object or the database."
+            $stdout.puts(message)
+            @succeeded = false
+          end
+        end
+
         database.each do |object|
           case object
           when IndexColumn
@@ -164,6 +177,13 @@ module Groonga
           end
         end
       end
+
+      def open_cursor(database, &block)
+        flags =
+          TableCursorFlags::ASCENDING |
+          TableCursorFlags::BY_ID
+        TableCursor.open(database, :flags => flags, &block)
+      end
     end
   end
 end

  Added: lib/mrb/scripts/id.rb (+12 -0) 100644
===================================================================
--- /dev/null
+++ lib/mrb/scripts/id.rb    2015-11-02 18:25:47 +0900 (a49e4fd)
@@ -0,0 +1,12 @@
+module Groonga
+  module ID
+    # TODO: Should we bind GRN_N_RESERVED_TYPES?
+    N_RESERVED_TYPES = 256
+
+    class << self
+      def builtin?(id)
+        id < N_RESERVED_TYPES
+      end
+    end
+  end
+end

  Modified: lib/mrb/scripts/initialize/post.rb (+2 -0)
===================================================================
--- lib/mrb/scripts/initialize/post.rb    2015-11-02 17:55:08 +0900 (96bea42)
+++ lib/mrb/scripts/initialize/post.rb    2015-11-02 18:25:47 +0900 (2ccda4d)
@@ -4,6 +4,8 @@ require "context"
 
 require "writer"
 
+require "id"
+
 require "object"
 require "database"
 require "table"

  Modified: lib/mrb/scripts/sources.am (+1 -0)
===================================================================
--- lib/mrb/scripts/sources.am    2015-11-02 17:55:08 +0900 (a1839d9)
+++ lib/mrb/scripts/sources.am    2015-11-02 18:25:47 +0900 (4fd38a2)
@@ -9,6 +9,7 @@ RUBY_SCRIPT_FILES =				\
 	expression_rewriter.rb			\
 	expression_rewriters.rb			\
 	expression_size_estimator.rb		\
+	id.rb					\
 	index_column.rb				\
 	index_cursor.rb				\
 	index_info.rb				\
-------------- next part --------------
HTML����������������������������...
下載 



More information about the Groonga-commit mailing list
Back to archive index