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_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, _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.



186
187
188
189
190
# File 'lib/duckdb/value.rb', line 186

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



16
17
18
19
20
# File 'lib/duckdb/value.rb', line 16

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

  _create_bool(value)
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.



161
162
163
164
# File 'lib/duckdb/value.rb', line 161

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.



149
150
151
152
# File 'lib/duckdb/value.rb', line 149

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.



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

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



45
46
47
48
49
50
# File 'lib/duckdb/value.rb', line 45

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



60
61
62
63
64
65
# File 'lib/duckdb/value.rb', line 60

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



75
76
77
78
79
80
# File 'lib/duckdb/value.rb', line 75

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



30
31
32
33
34
35
# File 'lib/duckdb/value.rb', line 30

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:



141
142
143
144
# File 'ext/duckdb/value.c', line 141

static VALUE duckdb_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.



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

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



105
106
107
108
109
110
# File 'lib/duckdb/value.rb', line 105

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



120
121
122
123
124
125
# File 'lib/duckdb/value.rb', line 120

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



135
136
137
138
139
140
# File 'lib/duckdb/value.rb', line 135

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



90
91
92
93
94
95
# File 'lib/duckdb/value.rb', line 90

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.



173
174
175
176
177
# File 'lib/duckdb/value.rb', line 173

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