Mercurial > hg > monetdb-perl
view DBD/t/26hge.t @ 28:e3e0159771c7
Test HUGEINT and DECIMAL(38,_)
author | Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com> |
---|---|
date | Thu, 17 Dec 2020 09:24:37 +0100 (2020-12-17) |
parents | |
children |
line wrap: on
line source
#!perl -I./t # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # # Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V. $| = 1; use strict; use warnings; use DBI(); use DBD_TEST(); use Test::More; if ( !defined $ENV{DBI_DSN} ) { plan skip_all => 'Cannot test without DB info'; } my $dbh = DBI->connect or die "Connect failed: $DBI::errstr\n"; $dbh->{RaiseError} = 1; $dbh->{PrintError} = 0; my $chk128 = $dbh->prepare("SELECT * FROM sys.types WHERE systemname = 'hge'"); $chk128->execute; my $hgetypes = $chk128->fetchall_arrayref; if (@{$hgetypes}) { plan tests => 11; } else { plan skip_all => "no hge support"; } ok($dbh->do('DROP TABLE IF EXISTS perl_dec38;'), 'DROP TABLE'); ok($dbh->do(qq{ CREATE TABLE perl_dec38 ( h HUGEINT, d38_0 DECIMAL(38,0), d38_19 DECIMAL(38,19), d38_38 DECIMAL(38,38) );}), 'CREATE TABLE'); ok($dbh->do(qq{INSERT INTO perl_dec38 VALUES ( 12345678901234567899876543210987654321, 12345678901234567899876543210987654321, 1234567890123456789.9876543210987654321, .12345678901234567899876543210987654321 );}), 'INSERT'); my ($hge, $s0, $s19, $s38) = $dbh->selectrow_array(qq{ SELECT h, CAST(d38_0 AS TEXT) AS s0, CAST(d38_19 AS TEXT) AS s19, CAST(d38_38 AS TEXT) AS s38 FROM perl_dec38;}); is("$hge", '12345678901234567899876543210987654321', 'selectrow_array huge 12345678901234567899876543210987654321'); is("$s0", '12345678901234567899876543210987654321', 'selectrow_array dec 12345678901234567899876543210987654321'); is("$s19", '1234567890123456789.9876543210987654321', 'selectrow_array dec 1234567890123456789.9876543210987654321'); is("$s38", '0.12345678901234567899876543210987654321', 'selectrow_array dec 0.12345678901234567899876543210987654321'); my $rowref = $dbh->selectrow_arrayref(qq{ SELECT h, CAST(d38_0 AS TEXT) AS s0, CAST(d38_19 AS TEXT) AS s19, CAST(d38_38 AS TEXT) AS s38 FROM perl_dec38;}); is("$rowref->[0]", '12345678901234567899876543210987654321', 'selectrow_array huge 12345678901234567899876543210987654321'); is("$rowref->[1]", '12345678901234567899876543210987654321', 'selectrow_array dec 12345678901234567899876543210987654321'); is("$rowref->[2]", '1234567890123456789.9876543210987654321', 'selectrow_array dec 1234567890123456789.9876543210987654321'); is("$rowref->[3]", '0.12345678901234567899876543210987654321', 'selectrow_array dec 0.12345678901234567899876543210987654321');