lib/duckdb/converter.rb in duckdb-1.1.2.1 vs lib/duckdb/converter.rb in duckdb-1.1.3.0
- old
+ new
@@ -153,10 +153,23 @@
raise(ArgumentError, "Cannot parse `#{value.inspect}` to Time object. #{e.message}")
end
end
end
+ def _parse_deciaml(value)
+ case value
+ when BigDecimal
+ value
+ else
+ begin
+ BigDecimal(value.to_s)
+ rescue StandardError => e
+ raise(ArgumentError, "Cannot parse `#{value.inspect}` to BigDecimal object. #{e.message}")
+ end
+ end
+ end
+
def _to_query_progress(percentage, rows_processed, total_rows_to_process)
DuckDB::QueryProgress.new(percentage, rows_processed, total_rows_to_process).freeze
end
private
@@ -168,8 +181,15 @@
lower = value - (upper << HALF_HUGEINT_BIT)
[lower, upper]
else
raise(ArgumentError, "The argument `#{value.inspect}` must be Integer.")
end
+ end
+
+ def decimal_to_hugeint(value)
+ integer_value = (value * (10 ** value.scale)).to_i
+ integer_to_hugeint(integer_value)
+ rescue FloatDomainError => e
+ raise(ArgumentError, "The argument `#{value.inspect}` must be converted to Integer. #{e.message}")
end
end
end