Class: Groonga::Schema::TableDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/groonga/schema.rb

Overview

スキーマ定義時に create_table#create_table からブロックに渡されてくる オブジェクト

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#nameObject (readonly)

テーブルの名前



797
798
799
# File 'lib/groonga/schema.rb', line 797

def name
  @name
end

Instance Method Details

#boolean(name, options = {}) ⇒ Object Also known as: bool

名前が name の真偽値を格納できるカラムを作成する。

options に指定可能な値は #column を参照。



1183
1184
1185
# File 'lib/groonga/schema.rb', line 1183

def boolean(name, options={})
  column(name, "Bool", options)
end

#column(name, type, options = {}) ⇒ Object

名前が name で型が type のカラムを作成する。

@since 12.0.2

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :force (Object)

    +true+ を指定すると既存の同名のカラムが 存在していても、強制的に新しいカラムを作成する。

  • :path (Object)

    カラムを保存するパス。

  • :persistent (Object)

    +true+ を指定すると永続カラムとなる。 +:path+ を省略 した場合は自動的にパスが付加される。

  • :type (Object) — default: :scalar

    カラムの値の格納方法について指定する。

    • :scalar := スカラ値(単独の値)を格納する。
    • :vector := 値の配列を格納する。
  • :with_weight (Boolean) — default: false

    It specifies whether making the column weight vector column or not. Weight vector column can store weight for each element.

    You can’t use this option for scalar column.

  • :compress (Object)

    値の圧縮方法を指定する。省略した場合は、圧縮しない。

    • :zlib: Compressed by zlib.
    • :lz4: Compzressed by LZ4.
    • :zstd: Compressed by Zstandard.
    • :zstandard: Compressed by Zstandard.
  • :weight_float32 (Boolean) — default: false

    It specifies whether the column uses 32 bit float for weight or not.

    You can’t use this option for scalar column.

  • :missing_mode (:add, :ignore, :nil, nil) — default: nil

    It specifies how to process missing value.

    • :add, nil: Correspond to MISSING_ADD
    • :ignore: Correspond to MISSING_IGNORE
    • :nil: Correspond to MISSING_NIL

    See https://groonga.org/docs/reference/commands/column_create.html#column-create-missing-mode for each MISSING_* values.

    @since 12.0.2

  • :invalid_mode (:error, :warn, :ignore, nil) — default: nil

    It specifies how to process invalid value.

    • :add, nil: Correspond to INVALID_ERROR
    • :warn: Correspond to INVALID_WARN
    • :ignore: Correspond to INVALID_IGNORE

    See https://groonga.org/docs/reference/commands/column_create.html#column-create-invalid-mode for each INVALID_* values.

    @since 12.0.2



898
899
900
901
902
903
904
905
906
907
# File 'lib/groonga/schema.rb', line 898

def column(name, type, options={})
  definition = self[name, ColumnDefinition]
  if definition.nil?
    definition = ColumnDefinition.new(name, options)
    update_definition(name, ColumnDefinition, definition)
  end
  definition.type = type
  definition.options.merge!(column_options.merge(options))
  self
end

#float(name, options = {}) ⇒ Object

名前が name のieee754形式の64bit浮動小数点数のカラム を作成する。

options に指定可能な値は #column を参照。



1114
1115
1116
# File 'lib/groonga/schema.rb', line 1114

def float(name, options={})
  column(name, "Float", options)
end

#index(target_table_or_target_column_full_name, *args) ⇒ Object

target_tabletarget_column を対象とするインデック スカラムを作成します。複数のカラムを指定することもで きます。

target_column_full_name で指定するときはテーブル名 とカラム名を”.”でつなげます。

例えば、「Users」テーブルの「name」カラムのインデックスカラムを 指定する場合はこうなります。

Examples:

table.index("Users.name")

Parameters:

  • args (Array)

    インデックスカラム作成時に指定できるオプション。 ハッシュを使って次の要素を指定することができる。

    • :name := インデックスカラムのカラム名を任意に指定する。 =:
    • :force := +true+ を指定すると既存の同名のカラムが 存在していても、強制的に新しいカラムを作成する。 =:
    • :path := カラムを保存するパス。 =:
    • :persistent := +true+ を指定すると永続カラムとなる。 +:path+ を省略した場合は自動的にパスが付加される。 =:
    • :with_section := +true+ を指定すると転置索引にsection(段落情報)を 合わせて格納する。未指定または +nil+ を指定した場合、 複数のカラムを指定すると自動的に有効になる。 =:
    • :with_weight := +true+ を指定すると転置索引にweight情報を合わせて 格納する。 =:
    • :with_position := +true+ を指定すると転置索引に出現位置情報を合わせて 格納する。未指定または +nil+ を指定した場合、テーブル がトークナイザー利用している場合は自動的に有効になる。 +TokenDelimit+ など全文検索用ではないトークナイザーを 使う場合は明示的に +false+ を指定することで使用リソース を少なくできる。=:


982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
# File 'lib/groonga/schema.rb', line 982

def index(target_table_or_target_column_full_name, *args)
  key, target_table, target_columns, options =
    parse_index_argument(target_table_or_target_column_full_name, *args)

  name = options.delete(:name)
  definition = self[key, IndexColumnDefinition]
  if definition.nil?
    definition = IndexColumnDefinition.new(name, options)
    update_definition(key, IndexColumnDefinition, definition)
  end
  definition.target_table = target_table
  definition.target_columns = target_columns
  definition.options.merge!(column_options.merge(options))
  self
end

#integer16(name, options = {}) ⇒ Object Also known as: int16

Defines a 16 bit signed integer column named @name@.

Parameters:

  • name (String or Symbol)

    the column name

  • options (Hash) (defaults to: {})

    ({}) the options

See Also:



1046
1047
1048
# File 'lib/groonga/schema.rb', line 1046

def integer16(name, options={})
  column(name, "Int16", options)
end

#integer32(name, options = {}) ⇒ Object Also known as: integer, int32

名前が name の32bit符号付き整数のカラムを作成する。

options に指定可能な値は #column を参照。



1055
1056
1057
# File 'lib/groonga/schema.rb', line 1055

def integer32(name, options={})
  column(name, "Int32", options)
end

#integer64(name, options = {}) ⇒ Object Also known as: int64

名前が name の64bit符号付き整数のカラムを作成する。

options に指定可能な値は #column を参照。



1065
1066
1067
# File 'lib/groonga/schema.rb', line 1065

def integer64(name, options={})
  column(name, "Int64", options)
end

#integer8(name, options = {}) ⇒ Object Also known as: int8

Defines a 8 bit signed integer column named @name@.

Parameters:

  • name (String or Symbol)

    the column name

  • options (Hash) (defaults to: {})

    ({}) the options

See Also:



1036
1037
1038
# File 'lib/groonga/schema.rb', line 1036

def integer8(name, options={})
  column(name, "Int8", options)
end

#long_text(name, options = {}) ⇒ Object

名前が name の2Gbyte以下の文字列を格納できるカラムを 作成する。

options に指定可能な値は #column を参照。



1162
1163
1164
# File 'lib/groonga/schema.rb', line 1162

def long_text(name, options={})
  column(name, "LongText", options)
end

#reference(name, table = nil, options = {}) ⇒ Object

名前が nametable のレコードIDを格納する参照カラ ムを作成する。

table が省略された場合は name の複数形が使われる。 例えば、 name が”user”な場合は table は”users”になる。

options に指定可能な値は #column を参照。



1174
1175
1176
1177
# File 'lib/groonga/schema.rb', line 1174

def reference(name, table=nil, options={})
  table ||= lambda {|context| guess_table_name(context, name)}
  column(name, table, options)
end

#remove_column(name, options = {}) ⇒ Object

名前が name のカラムを削除します。

options に指定可能な値はありません(TODO options は不要?)。



913
914
915
916
917
918
919
920
921
# File 'lib/groonga/schema.rb', line 913

def remove_column(name, options={})
  definition = self[name, ColumnRemoveDefinition]
  if definition.nil?
    definition = ColumnRemoveDefinition.new(name, options)
    update_definition(name, ColumnRemoveDefinition, definition)
  end
  definition.options.merge!(options)
  self
end

#remove_index(target_table_or_target_column_full_name, *args) ⇒ Object

target_tabletarget_column を対象とするインデッ クスカラムを削除します。

target_column_full_name で指定するときはテーブル名 とカラム名を”.”でつなげます。

例えば、「Users」テーブルの「name」カラムのインデックスカラムを 削除する場合はこうなります。

Examples:

table.remove_index("Users.name")

Parameters:

  • args (::Hash)

    { :name => target_column }と指定す ることでインデックスカラムの任意のカラム名を指定することができる。



1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
# File 'lib/groonga/schema.rb', line 1012

def remove_index(target_table_or_target_column_full_name, *args)
  key, target_table, target_columns, options =
    parse_index_argument(target_table_or_target_column_full_name, *args)

  name = options.delete(:name)
  name ||= lambda do |context|
    IndexColumnDefinition.column_name(context,
                                      target_table,
                                      target_columns)
  end
  definition = self[key, ColumnRemoveDefinition]
  if definition.nil?
    definition = ColumnRemoveDefinition.new(name, options)
    update_definition(key, ColumnRemoveDefinition, definition)
  end
  definition.options.merge!(options)
  self
end

#rename_column(current_name, new_name, options = {}) ⇒ Object

Renames current_name column to new_name column.

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :context (Groonga:Context) — default: Groonga::Context.default

    The context to be used in renaming.



930
931
932
933
934
935
936
937
938
939
# File 'lib/groonga/schema.rb', line 930

def rename_column(current_name, new_name, options={})
  definition = self[name, ColumnRenameDefinition]
  if definition.nil?
    definition = ColumnRenameDefinition.new(current_name, new_name,
                                            options)
    update_definition(name, ColumnRenameDefinition, definition)
  end
  definition.options.merge!(options)
  self
end

#short_text(name, options = {}) ⇒ Object Also known as: string

名前が name の4Kbyte以下の文字列を格納できるカラムを 作成する。

options に指定可能な値は #column を参照。



1143
1144
1145
# File 'lib/groonga/schema.rb', line 1143

def short_text(name, options={})
  column(name, "ShortText", options)
end

#text(name, options = {}) ⇒ Object

名前が name の64Kbyte以下の文字列を格納できるカラムを 作成する。

options に指定可能な値は #column を参照。



1153
1154
1155
# File 'lib/groonga/schema.rb', line 1153

def text(name, options={})
  column(name, "Text", options)
end

#time(name, options = {}) ⇒ Object

名前が name の64bit符号付き整数で1970年1月1日0時0分 0秒からの経過マイクロ秒数を格納するカラムを作成する。

options に指定可能な値は #column を参照。



1123
1124
1125
# File 'lib/groonga/schema.rb', line 1123

def time(name, options={})
  column(name, "Time", options)
end

#timestamps(options = {}) ⇒ Object

以下と同様:

table.time("updated_at")
table.time("created_at")


1133
1134
1135
1136
# File 'lib/groonga/schema.rb', line 1133

def timestamps(options={})
  time("created_at", options)
  time("updated_at", options)
end

#tokyo_geo_point(name, options = {}) ⇒ Object

Defines a geo point in Tokyo geodetic system column named @name@.

Parameters:

  • name (String or Symbol)

    the column name

  • options (Hash) (defaults to: {})

    ({}) the options

See Also:



1194
1195
1196
# File 'lib/groonga/schema.rb', line 1194

def tokyo_geo_point(name, options={})
  column(name, "TokyoGeoPoint", options)
end

#unsigned_integer16(name, options = {}) ⇒ Object Also known as: uint16

Defines a 16 bit unsigned integer column named @name@.

Parameters:

  • name (String or Symbol)

    the column name

  • options (Hash) (defaults to: {})

    ({}) the options

See Also:



1085
1086
1087
# File 'lib/groonga/schema.rb', line 1085

def unsigned_integer16(name, options={})
  column(name, "UInt16", options)
end

#unsigned_integer32(name, options = {}) ⇒ Object Also known as: unsigned_integer, uint32

名前が name の32bit符号なし整数のカラムを作成する。

options に指定可能な値は #column を参照。



1094
1095
1096
# File 'lib/groonga/schema.rb', line 1094

def unsigned_integer32(name, options={})
  column(name, "UInt32", options)
end

#unsigned_integer64(name, options = {}) ⇒ Object Also known as: uint64

名前が name の64bit符号なし整数のカラムを作成する。

options に指定可能な値は #column を参照。



1104
1105
1106
# File 'lib/groonga/schema.rb', line 1104

def unsigned_integer64(name, options={})
  column(name, "UInt64", options)
end

#unsigned_integer8(name, options = {}) ⇒ Object Also known as: uint8

Defines a 8 bit unsigned integer column named @name@.

Parameters:

  • name (String or Symbol)

    the column name

  • options (Hash) (defaults to: {})

    ({}) the options

See Also:



1075
1076
1077
# File 'lib/groonga/schema.rb', line 1075

def unsigned_integer8(name, options={})
  column(name, "UInt8", options)
end

#wgs84_geo_point(name, options = {}) ⇒ Object Also known as: geo_point

Defines a geo point in WGS 84 (World Geodetic System) column named @name@.

Parameters:

  • name (String or Symbol)

    the column name

  • options (Hash) (defaults to: {})

    ({}) the options

See Also:



1204
1205
1206
# File 'lib/groonga/schema.rb', line 1204

def wgs84_geo_point(name, options={})
  column(name, "WGS84GeoPoint", options)
end