Class: DuckDB::Value

Inherits:
Object
  • Object
show all
Extended by:
Converter
Defined in:
lib/duckdb/value.rb,
ext/duckdb/value.c

Constant Summary

Constants included from Converter

Converter::EPOCH, Converter::EPOCH_UTC, Converter::HALF_HUGEINT, Converter::HALF_HUGEINT_BIT, Converter::LOWER_HUGEINT_MASK, Converter::RANGE_DECIMAL_WIDTH, Converter::RANGE_HUGEINT, Converter::RANGE_INT16, Converter::RANGE_INT32, Converter::RANGE_INT64, Converter::RANGE_INT8, Converter::RANGE_UHUGEINT, Converter::RANGE_UINT16, Converter::RANGE_UINT32, Converter::RANGE_UINT64, Converter::RANGE_UINT8

Class Method Summary collapse

Methods included from Converter

_decimal_to_unscaled, _decimal_width, _hugeint_lower, _hugeint_upper, _parse_date, _parse_deciaml, _parse_time, _to_date, _to_decimal_from_hugeint, _to_decimal_from_value, _to_hugeint_from_vector, _to_infinity, _to_interval_from_vector, _to_query_progress, _to_time, _to_time_from_duckdb_time, _to_time_from_duckdb_time_ns, _to_time_from_duckdb_time_tz, _to_time_from_duckdb_timestamp_ms, _to_time_from_duckdb_timestamp_ns, _to_time_from_duckdb_timestamp_s, _to_time_from_duckdb_timestamp_tz, decimal_to_hugeint, default_timezone_utc?, format_timestamp_with_micro, format_timezone_offset, integer_to_hugeint

Class Method Details

.create_blob(value) ⇒ DuckDB::Value

Creates a DuckDB::Value of BLOB type.

value = DuckDB::Value.create_blob("\x00\x01\x02".b)

Parameters:

  • value (String)

    the binary string value.

Returns:

Raises:

  • (ArgumentError)

    if value is not a BINARY encoded String.



188
189
190
191
192
# File 'lib/duckdb/value.rb', line 188

def create_blob(value)
  check_type!(value, String)
  check_binary!(value)
  _create_blob(value)
end

.create_bool(value) ⇒ DuckDB::Value

Creates a new DuckDB::Value with a boolean value.

require 'duckdb'
value = DuckDB::Value.create_bool(true)

Parameters:

  • value (TrueClass, FalseClass)

    the boolean value

Returns:

Raises:

  • (ArgumentError)

    if value is not a boolean



18
19
20
21
22
# File 'lib/duckdb/value.rb', line 18

def create_bool(value)
  check_type!(value, [TrueClass, FalseClass])

  _create_bool(value)
end

.create_decimal(value) ⇒ DuckDB::Value

Creates a DuckDB::Value of DECIMAL type.

value = DuckDB::Value.create_decimal(BigDecimal('12345.678'))

Parameters:

  • value (BigDecimal)

    the decimal value.

Returns:

Raises:

  • (ArgumentError)

    if value is not a BigDecimal or its width is out of range (1..38).



231
232
233
234
235
236
237
238
239
# File 'lib/duckdb/value.rb', line 231

def create_decimal(value)
  check_type!(value, BigDecimal)

  width = _decimal_width(value)
  check_range!(width, RANGE_DECIMAL_WIDTH, 'DECIMAL width')

  lower, upper = decimal_to_hugeint(value)
  _create_decimal(lower, upper, width, value.scale)
end

.create_double(value) ⇒ DuckDB::Value

Creates a DuckDB::Value of DOUBLE type.

value = DuckDB::Value.create_double(1.5)

Parameters:

  • value (Numeric)

    the numeric value.

Returns:

Raises:

  • (ArgumentError)

    if value is not a Numeric.



163
164
165
166
# File 'lib/duckdb/value.rb', line 163

def create_double(value)
  check_type!(value, [Integer, Float])
  _create_double(value)
end

.create_float(value) ⇒ DuckDB::Value

Creates a DuckDB::Value of FLOAT type.

value = DuckDB::Value.create_float(1.5)

Parameters:

  • value (Numeric)

    the numeric value.

Returns:

Raises:

  • (ArgumentError)

    if value is not a Numeric.



151
152
153
154
# File 'lib/duckdb/value.rb', line 151

def create_float(value)
  check_type!(value, [Integer, Float])
  _create_float(value)
end

.create_hugeint(value) ⇒ DuckDB::Value

Creates a DuckDB::Value of HUGEINT type.

value = DuckDB::Value.create_hugeint(1_234_567_890_123_456_789_012_345)

Parameters:

  • value (Integer)

    the integer value (-(2**127)..(2**127 - 1))

Returns:

Raises:

  • (ArgumentError)

    if value is not an Integer or out of range.



201
202
203
204
205
206
207
# File 'lib/duckdb/value.rb', line 201

def create_hugeint(value)
  check_type!(value, Integer)
  check_range!(value, RANGE_HUGEINT, 'HUGEINT')

  lower, upper = integer_to_hugeint(value)
  _create_hugeint(lower, upper)
end

.create_int16(value) ⇒ DuckDB::Value

Creates a new DuckDB::Value with an INT16 (SMALLINT) value.

require 'duckdb'
value = DuckDB::Value.create_int16(32_767)

Parameters:

  • value (Integer)

    the integer value (-32768..32767)

Returns:

Raises:

  • (ArgumentError)

    if value is not an Integer or out of range



47
48
49
50
51
52
# File 'lib/duckdb/value.rb', line 47

def create_int16(value)
  check_type!(value, Integer)
  check_range!(value, RANGE_INT16, 'INT16')

  _create_int16(value)
end

.create_int32(value) ⇒ DuckDB::Value

Creates a new DuckDB::Value with an INT32 (INTEGER) value.

require 'duckdb'
value = DuckDB::Value.create_int32(2_147_483_647)

Parameters:

  • value (Integer)

    the integer value (-2147483648..2147483647)

Returns:

Raises:

  • (ArgumentError)

    if value is not an Integer or out of range



62
63
64
65
66
67
# File 'lib/duckdb/value.rb', line 62

def create_int32(value)
  check_type!(value, Integer)
  check_range!(value, RANGE_INT32, 'INT32')

  _create_int32(value)
end

.create_int64(value) ⇒ DuckDB::Value

Creates a new DuckDB::Value with an INT64 (BIGINT) value.

require 'duckdb'
value = DuckDB::Value.create_int64(9_223_372_036_854_775_807)

Parameters:

  • value (Integer)

    the integer value (-9223372036854775808..9223372036854775807)

Returns:

Raises:

  • (ArgumentError)

    if value is not an Integer or out of range



77
78
79
80
81
82
# File 'lib/duckdb/value.rb', line 77

def create_int64(value)
  check_type!(value, Integer)
  check_range!(value, RANGE_INT64, 'INT64')

  _create_int64(value)
end

.create_int8(value) ⇒ DuckDB::Value

Creates a new DuckDB::Value with an INT8 (TINYINT) value.

require 'duckdb'
value = DuckDB::Value.create_int8(127)

Parameters:

  • value (Integer)

    the integer value (-128..127)

Returns:

Raises:

  • (ArgumentError)

    if value is not an Integer or out of range



32
33
34
35
36
37
# File 'lib/duckdb/value.rb', line 32

def create_int8(value)
  check_type!(value, Integer)
  check_range!(value, RANGE_INT8, 'INT8')

  _create_int8(value)
end

.DuckDB::Value.create_nullDuckDB::Value

Creates a new DuckDB::Value representing SQL NULL.

require 'duckdb'
value = DuckDB::Value.create_null

Returns:



152
153
154
155
# File 'ext/duckdb/value.c', line 152

static VALUE value_s_create_null(VALUE klass) {
    duckdb_value value = duckdb_create_null_value();
    return rbduckdb_value_new(value);
}

.create_uhugeint(value) ⇒ DuckDB::Value

Creates a DuckDB::Value of UHUGEINT type.

value = DuckDB::Value.create_uhugeint(340_282_366_920_938_463_463_374_607_431_768_211_455)

Parameters:

  • value (Integer)

    the integer value (0..(2**128 - 1))

Returns:

Raises:

  • (ArgumentError)

    if value is not an Integer or out of range.



216
217
218
219
220
221
222
# File 'lib/duckdb/value.rb', line 216

def create_uhugeint(value)
  check_type!(value, Integer)
  check_range!(value, RANGE_UHUGEINT, 'UHUGEINT')

  lower, upper = integer_to_hugeint(value)
  _create_uhugeint(lower, upper)
end

.create_uint16(value) ⇒ DuckDB::Value

Creates a new DuckDB::Value with a UINT16 (USMALLINT) value.

require 'duckdb'
value = DuckDB::Value.create_uint16(65_535)

Parameters:

  • value (Integer)

    the integer value (0..65535)

Returns:

Raises:

  • (ArgumentError)

    if value is not an Integer or out of range



107
108
109
110
111
112
# File 'lib/duckdb/value.rb', line 107

def create_uint16(value)
  check_type!(value, Integer)
  check_range!(value, RANGE_UINT16, 'UINT16')

  _create_uint16(value)
end

.create_uint32(value) ⇒ DuckDB::Value

Creates a new DuckDB::Value with a UINT32 (UINTEGER) value.

require 'duckdb'
value = DuckDB::Value.create_uint32(4_294_967_295)

Parameters:

  • value (Integer)

    the integer value (0..4294967295)

Returns:

Raises:

  • (ArgumentError)

    if value is not an Integer or out of range



122
123
124
125
126
127
# File 'lib/duckdb/value.rb', line 122

def create_uint32(value)
  check_type!(value, Integer)
  check_range!(value, RANGE_UINT32, 'UINT32')

  _create_uint32(value)
end

.create_uint64(value) ⇒ DuckDB::Value

Creates a new DuckDB::Value with a UINT64 (UBIGINT) value.

require 'duckdb'
value = DuckDB::Value.create_uint64(18_446_744_073_709_551_615)

Parameters:

  • value (Integer)

    the integer value (0..18446744073709551615)

Returns:

Raises:

  • (ArgumentError)

    if value is not an Integer or out of range



137
138
139
140
141
142
# File 'lib/duckdb/value.rb', line 137

def create_uint64(value)
  check_type!(value, Integer)
  check_range!(value, RANGE_UINT64, 'UINT64')

  _create_uint64(value)
end

.create_uint8(value) ⇒ DuckDB::Value

Creates a new DuckDB::Value with a UINT8 (UTINYINT) value.

require 'duckdb'
value = DuckDB::Value.create_uint8(255)

Parameters:

  • value (Integer)

    the integer value (0..255)

Returns:

Raises:

  • (ArgumentError)

    if value is not an Integer or out of range



92
93
94
95
96
97
# File 'lib/duckdb/value.rb', line 92

def create_uint8(value)
  check_type!(value, Integer)
  check_range!(value, RANGE_UINT8, 'UINT8')

  _create_uint8(value)
end

.create_varchar(value) ⇒ DuckDB::Value

Creates a DuckDB::Value of VARCHAR type.

value = DuckDB::Value.create_varchar('hello')

Parameters:

  • value (String)

    the string value.

Returns:

Raises:

  • (ArgumentError)

    if value is not a String.



175
176
177
178
179
# File 'lib/duckdb/value.rb', line 175

def create_varchar(value)
  check_type!(value, String)
  check_utf8_compatible!(value)
  _create_varchar(value)
end