Class: Iceberg::Catalog
- Inherits:
-
Object
show all
- Defined in:
- lib/iceberg/catalog.rb
Instance Method Summary
collapse
Instance Method Details
#create_namespace(namespace, properties: {}, if_not_exists: nil) ⇒ Object
7
8
9
10
11
12
13
14
15
|
# File 'lib/iceberg/catalog.rb', line 7
def create_namespace(namespace, properties: {}, if_not_exists: nil)
@catalog.create_namespace(namespace, properties)
rescue Error => e
if !if_not_exists || (e.message != "Cannot create namespace" && !e.message.include?("already exists"))
raise e
end
nil
end
|
#create_table(table_name, schema: nil, location: nil) ⇒ Object
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/iceberg/catalog.rb', line 43
def create_table(table_name, schema: nil, location: nil)
if !schema.nil? && block_given?
raise ArgumentError, "Must pass schema or block"
end
if block_given?
table_definition = TableDefinition.new
yield table_definition
schema = Schema.new(table_definition.fields)
elsif schema.is_a?(Hash) || (defined?(Polars::Schema) && schema.is_a?(Polars::Schema))
fields =
schema.to_h.map.with_index do |(k, v), i|
{
id: i + 1,
name: k.is_a?(Symbol) ? k.to_s : k,
type: v,
required: false
}
end
schema = Schema.new(fields)
elsif schema.nil?
schema = Schema.new([])
end
Table.new(@catalog.create_table(table_name, schema, location), @catalog)
end
|
#drop_namespace(namespace, if_exists: nil) ⇒ Object
29
30
31
32
33
34
35
36
37
|
# File 'lib/iceberg/catalog.rb', line 29
def drop_namespace(namespace, if_exists: nil)
@catalog.drop_namespace(namespace)
rescue Error => e
if !if_exists || (e.message != "Tried to drop a namespace that does not exist" && !e.message.include?("No such namespace") && !e.message.include?("The specified namespace does not exist") && !e.message.include?("not found"))
raise e
end
nil
end
|
#drop_table(table_name, if_exists: nil) ⇒ Object
74
75
76
77
78
79
80
81
82
|
# File 'lib/iceberg/catalog.rb', line 74
def drop_table(table_name, if_exists: nil)
@catalog.drop_table(table_name)
rescue Error => e
if !if_exists || (e.message != "Tried to drop a table that does not exist" && !e.message.include?("No such table") && !e.message.include?("The specified table does not exist") && !e.message.include?("not found"))
raise e
end
nil
end
|
#inspect ⇒ Object
106
107
108
|
# File 'lib/iceberg/catalog.rb', line 106
def inspect
to_s
end
|
#list_namespaces(parent = nil) ⇒ Object
3
4
5
|
# File 'lib/iceberg/catalog.rb', line 3
def list_namespaces(parent = nil)
@catalog.list_namespaces(parent)
end
|
#list_tables(namespace) ⇒ Object
39
40
41
|
# File 'lib/iceberg/catalog.rb', line 39
def list_tables(namespace)
@catalog.list_tables(namespace)
end
|
#load_table(table_name) ⇒ Object
70
71
72
|
# File 'lib/iceberg/catalog.rb', line 70
def load_table(table_name)
Table.new(@catalog.load_table(table_name), @catalog)
end
|
#namespace_exists?(namespace) ⇒ Boolean
17
18
19
|
# File 'lib/iceberg/catalog.rb', line 17
def namespace_exists?(namespace)
@catalog.namespace_exists?(namespace)
end
|
#namespace_properties(namespace) ⇒ Object
21
22
23
|
# File 'lib/iceberg/catalog.rb', line 21
def namespace_properties(namespace)
@catalog.namespace_properties(namespace)
end
|
#register_table(table_name, metadata_location) ⇒ Object
94
95
96
|
# File 'lib/iceberg/catalog.rb', line 94
def register_table(table_name, metadata_location)
@catalog.register_table(table_name, metadata_location)
end
|
#rename_table(table_name, new_name) ⇒ Object
90
91
92
|
# File 'lib/iceberg/catalog.rb', line 90
def rename_table(table_name, new_name)
@catalog.rename_table(table_name, new_name)
end
|
#sql(sql) ⇒ Object
98
99
100
101
102
103
|
# File 'lib/iceberg/catalog.rb', line 98
def sql(sql)
raise Todo unless @catalog.respond_to?(:sql)
@catalog.sql(sql)
end
|
#table_exists?(table_name) ⇒ Boolean
84
85
86
87
88
|
# File 'lib/iceberg/catalog.rb', line 84
def table_exists?(table_name)
@catalog.table_exists?(table_name)
rescue NamespaceNotFoundError
false
end
|
#update_namespace(namespace, properties:) ⇒ Object
25
26
27
|
# File 'lib/iceberg/catalog.rb', line 25
def update_namespace(namespace, properties:)
@catalog.update_namespace(namespace, properties)
end
|