#!/usr/bin/env bats load $BATS_TEST_DIRNAME/helper/common.bash setup() { setup_common } teardown() { assert_feature_version teardown_common } @test "types: sql engine can parse all numeric data literals" { dolt sql < uint64-max.csv pk,v 0, 18446744073709551615 DELIM run dolt table import -u test uint64-max.csv [ "$status" -eq "0" ] dolt sql -r csv -q "SELECT * FROM test" run dolt sql -r csv -q "SELECT * FROM test" [ "$status" -eq "0" ] [ "${lines[1]}" = "0,18446744073709551615" ] cat < too-big.csv pk,v 2,40000000000000000000 DELIM run dolt table import -u test too-big.csv [ "$status" -eq "1" ] run dolt sql -q "INSERT INTO test VALUES (2, -1);" [ "$status" -eq "1" ] # check information_schema.COLUMNS table run dolt sql -q "select * from information_schema.COLUMNS where table_name = 'test' and column_name = 'v';" -r csv [[ "$output" =~ 'test,v,2,,YES,bigint,,,20,0,,,,bigint unsigned,"","","insert,references,select,update","","",' ]] || false } @test "types: BINARY(10)" { dolt sql < double.csv pk,v 1,8.988465674311578540726371186585217839905e+307 DELIM run dolt table import -u test double.csv [ "$status" -eq "0" ] dolt sql -r csv -q "SELECT * FROM test WHERE pk=1" run dolt sql -r csv -q "SELECT * FROM test WHERE pk=1" [ "$status" -eq "0" ] [ "${lines[1]}" = "1,8.988465674311579e+307" ] cat < double.csv pk,v 3,3.5953862697246314162905484746340871359614113505168999e+308 4,-3.5953862697246314162905484746340871359614113505168999e+308 DELIM run dolt table import -u test double.csv [ "$status" -eq "0" ] # check information_schema.COLUMNS table run dolt sql -q "select * from information_schema.COLUMNS where table_name = 'test' and column_name = 'v';" -r csv [[ "$output" =~ 'test,v,2,,YES,double,,,22,,,,,double,"","","insert,references,select,update","","",' ]] || false } @test "types: DOUBLE PRECISION" { dolt sql < float.csv pk,v 1,170141173319264429905852091742258462720 DELIM run dolt table import -u test float.csv [ "$status" -eq "0" ] run dolt sql -r csv -q "SELECT * FROM test WHERE pk=1" [ "$status" -eq "0" ] [ "${lines[1]}" = "1,1.7014117e+38" ] cat < float.csv pk,v 2,340282346638528859811704183484516925440 DELIM run dolt table import -u test float.csv [ "$status" -eq "0" ] dolt sql -r csv -q "SELECT * FROM test WHERE pk=2" run dolt sql -r csv -q "SELECT * FROM test WHERE pk=2" [ "$status" -eq "0" ] [ "${lines[1]}" = "2,3.4028235e+38" ] cat < float.csv pk,v 3,680564693277057719623408366969033850880 4,-680564693277057719623408366969033850880 DELIM run dolt table import -u test float.csv [ "$status" -ne "0" ] # check information_schema.COLUMNS table run dolt sql -q "select * from information_schema.COLUMNS where table_name = 'test' and column_name = 'v';" -r csv [[ "$output" =~ 'test,v,2,,YES,float,,,12,,,,,float,"","","insert,references,select,update","","",' ]] || false } @test "types: INT" { dolt sql < '0'" -r=csv [ "$status" -eq "0" ] [[ "$output" =~ "pk,v" ]] || false [[ "$output" =~ "5,01" ]] || false [[ "$output" =~ "1,1" ]] || false [[ "$output" =~ "3,1" ]] || false [[ "$output" =~ "2,11" ]] || false [[ "$output" =~ "4,12" ]] || false [[ "${#lines[@]}" = "6" ]] || false run dolt sql -q "SELECT * FROM test WHERE v <= '11'" -r=csv [ "$status" -eq "0" ] [[ "$output" =~ "pk,v" ]] || false [[ "$output" =~ "2,11" ]] || false [[ "$output" =~ "3,1" ]] || false [[ "$output" =~ "1,1" ]] || false [[ "$output" =~ "5,01" ]] || false [[ "$output" =~ "6,0" ]] || false [[ "${#lines[@]}" = "6" ]] || false # check information_schema.COLUMNS table run dolt sql -q "select * from information_schema.COLUMNS where table_name = 'test' and column_name = 'v';" -r csv [[ "$output" =~ 'test,v,2,,YES,longtext,1073741823,4294967295,,,,utf8mb4,utf8mb4_0900_bin,longtext,"","","insert,references,select,update","","",' ]] || false } @test "types: MEDIUMBLOB" { dolt sql <