iceberg 0.11.2-aarch64-linux → 0.12.0-aarch64-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/Cargo.lock +799 -270
- data/Cargo.toml +7 -0
- data/LICENSE-THIRD-PARTY.txt +38549 -16342
- data/NOTICE.txt +2 -2
- data/README.md +32 -12
- data/lib/iceberg/3.3/iceberg.so +0 -0
- data/lib/iceberg/3.4/iceberg.so +0 -0
- data/lib/iceberg/4.0/iceberg.so +0 -0
- data/lib/iceberg/catalog.rb +54 -35
- data/lib/iceberg/glue_catalog.rb +5 -2
- data/lib/iceberg/memory_catalog.rb +5 -2
- data/lib/iceberg/rest_catalog.rb +5 -2
- data/lib/iceberg/result.rb +22 -0
- data/lib/iceberg/s3_tables_catalog.rb +5 -2
- data/lib/iceberg/sql_catalog.rb +5 -2
- data/lib/iceberg/table.rb +87 -21
- data/lib/iceberg/table_definition.rb +49 -7
- data/lib/iceberg/table_scan.rb +14 -0
- data/lib/iceberg/transforms.rb +64 -0
- data/lib/iceberg/types.rb +137 -0
- data/lib/iceberg/version.rb +1 -1
- data/lib/iceberg.rb +10 -5
- metadata +5 -3
- data/lib/iceberg/schema.rb +0 -10
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
module Iceberg
|
|
2
|
+
class Transform
|
|
3
|
+
def ==(other)
|
|
4
|
+
other.is_a?(self.class)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def inspect
|
|
8
|
+
"#<#{self.class.name}>"
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class IdentityTransform < Transform
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
class BucketTransform < Transform
|
|
16
|
+
attr_reader :num_buckets
|
|
17
|
+
|
|
18
|
+
def initialize(num_buckets)
|
|
19
|
+
@num_buckets = num_buckets
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def ==(other)
|
|
23
|
+
other.is_a?(self.class) && other.num_buckets == @num_buckets
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def inspect
|
|
27
|
+
"#<#{self.class.name} num_buckets=#{@num_buckets.inspect}>"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class TruncateTransform < Transform
|
|
32
|
+
attr_reader :width
|
|
33
|
+
|
|
34
|
+
def initialize(width)
|
|
35
|
+
@width = width
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def ==(other)
|
|
39
|
+
other.is_a?(self.class) && other.width == @width
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def inspect
|
|
43
|
+
"#<#{self.class.name} width=#{@width.inspect}>"
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
class YearTransform < Transform
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
class MonthTransform < Transform
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
class DayTransform < Transform
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
class HourTransform < Transform
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
class VoidTransform < Transform
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
class UnknownTransform < Transform
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
module Iceberg
|
|
2
|
+
class Type
|
|
3
|
+
def inspect
|
|
4
|
+
"#<#{self.class.name}>"
|
|
5
|
+
end
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class PrimitiveType < Type
|
|
9
|
+
def ==(other)
|
|
10
|
+
other.is_a?(self.class)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class BooleanType < PrimitiveType
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class IntType < PrimitiveType
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class LongType < PrimitiveType
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
class FloatType < PrimitiveType
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class DoubleType < PrimitiveType
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
class DecimalType < PrimitiveType
|
|
30
|
+
attr_reader :precision, :scale
|
|
31
|
+
|
|
32
|
+
def initialize(precision, scale)
|
|
33
|
+
@precision = precision
|
|
34
|
+
@scale = scale
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def ==(other)
|
|
38
|
+
other.is_a?(self.class) && other.precision == @precision && other.scale == @scale
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def inspect
|
|
42
|
+
"#<#{self.class.name} precision=#{@precision.inspect}, scale=#{@scale.inspect}>"
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
class DateType < PrimitiveType
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
class TimeType < PrimitiveType
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
class TimestampType < PrimitiveType
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
class TimestamptzType < PrimitiveType
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
class TimestampNanoType < PrimitiveType
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
class TimestamptzNanoType < PrimitiveType
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
class StringType < PrimitiveType
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
class UUIDType < PrimitiveType
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
class FixedType < PrimitiveType
|
|
71
|
+
attr_reader :length
|
|
72
|
+
|
|
73
|
+
def initialize(length)
|
|
74
|
+
@length = length
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def ==(other)
|
|
78
|
+
other.is_a?(self.class) && other.length == @length
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def inspect
|
|
82
|
+
"#<#{self.class.name} length=#{@length.inspect}>"
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
class BinaryType < PrimitiveType
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
class StructType < Type
|
|
90
|
+
attr_reader :fields
|
|
91
|
+
|
|
92
|
+
def initialize(*fields)
|
|
93
|
+
@fields = fields
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def ==(other)
|
|
97
|
+
other.is_a?(self.class) && other.fields == @fields
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def inspect
|
|
101
|
+
"#<#{self.class.name} fields=#{@fields.inspect}>"
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
class ListType < Type
|
|
106
|
+
attr_reader :element_field
|
|
107
|
+
|
|
108
|
+
def initialize(element_field)
|
|
109
|
+
@element_field = element_field
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def ==(other)
|
|
113
|
+
other.is_a?(self.class) && other.element_field == @element_field
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def inspect
|
|
117
|
+
"#<#{self.class.name} element_field=#{@element_field.inspect}>"
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
class MapType < Type
|
|
122
|
+
attr_reader :key_field, :value_field
|
|
123
|
+
|
|
124
|
+
def initialize(key_field, value_field)
|
|
125
|
+
@key_field = key_field
|
|
126
|
+
@value_field = value_field
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def ==(other)
|
|
130
|
+
other.is_a?(self.class) && other.key_field == @key_field && other.value_field == @value_field
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def inspect
|
|
134
|
+
"#<#{self.class.name} key_field=#{@key_field.inspect}, value_field=#{@value_field.inspect}>"
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
data/lib/iceberg/version.rb
CHANGED
data/lib/iceberg.rb
CHANGED
|
@@ -5,13 +5,18 @@ rescue LoadError
|
|
|
5
5
|
require "iceberg/iceberg"
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
+
# stdlib
|
|
9
|
+
require "date"
|
|
10
|
+
|
|
8
11
|
# modules
|
|
9
12
|
require_relative "iceberg/catalog"
|
|
10
|
-
require_relative "iceberg/
|
|
13
|
+
require_relative "iceberg/result"
|
|
11
14
|
require_relative "iceberg/table"
|
|
12
15
|
require_relative "iceberg/table_scan"
|
|
13
16
|
require_relative "iceberg/static_table"
|
|
14
17
|
require_relative "iceberg/table_definition"
|
|
18
|
+
require_relative "iceberg/transforms"
|
|
19
|
+
require_relative "iceberg/types"
|
|
15
20
|
require_relative "iceberg/version"
|
|
16
21
|
|
|
17
22
|
# catalogs
|
|
@@ -25,14 +30,14 @@ module Iceberg
|
|
|
25
30
|
class Error < StandardError; end
|
|
26
31
|
class InvalidDataError < Error; end
|
|
27
32
|
class NamespaceAlreadyExistsError < Error; end
|
|
28
|
-
class
|
|
33
|
+
class NoSuchNamespaceError < Error; end
|
|
34
|
+
class NoSuchTableError < Error; end
|
|
29
35
|
class TableAlreadyExistsError < Error; end
|
|
30
|
-
class TableNotFoundError < Error; end
|
|
31
36
|
class UnsupportedFeatureError < Error; end
|
|
32
37
|
|
|
33
38
|
class Todo < Error
|
|
34
|
-
def message
|
|
35
|
-
|
|
39
|
+
def initialize(message = "not implemented yet")
|
|
40
|
+
super(message)
|
|
36
41
|
end
|
|
37
42
|
end
|
|
38
43
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: iceberg
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.12.0
|
|
5
5
|
platform: aarch64-linux
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Kane
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-07-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description:
|
|
14
14
|
email: andrew@ankane.org
|
|
@@ -31,13 +31,15 @@ files:
|
|
|
31
31
|
- lib/iceberg/glue_catalog.rb
|
|
32
32
|
- lib/iceberg/memory_catalog.rb
|
|
33
33
|
- lib/iceberg/rest_catalog.rb
|
|
34
|
+
- lib/iceberg/result.rb
|
|
34
35
|
- lib/iceberg/s3_tables_catalog.rb
|
|
35
|
-
- lib/iceberg/schema.rb
|
|
36
36
|
- lib/iceberg/sql_catalog.rb
|
|
37
37
|
- lib/iceberg/static_table.rb
|
|
38
38
|
- lib/iceberg/table.rb
|
|
39
39
|
- lib/iceberg/table_definition.rb
|
|
40
40
|
- lib/iceberg/table_scan.rb
|
|
41
|
+
- lib/iceberg/transforms.rb
|
|
42
|
+
- lib/iceberg/types.rb
|
|
41
43
|
- lib/iceberg/version.rb
|
|
42
44
|
homepage: https://github.com/ankane/iceberg-ruby
|
|
43
45
|
licenses:
|