Files
dolt/bats/2pk5cols-ints.bats
2020-04-14 11:22:15 -07:00

107 lines
3.8 KiB
Bash
Executable File

#!/usr/bin/env bats
load $BATS_TEST_DIRNAME/helper/common.bash
setup() {
setup_common
dolt sql <<SQL
CREATE TABLE test (
pk1 BIGINT NOT NULL COMMENT 'tag:0',
pk2 BIGINT NOT NULL COMMENT 'tag:1',
c1 BIGINT COMMENT 'tag:2',
c2 BIGINT COMMENT 'tag:3',
c3 BIGINT COMMENT 'tag:4',
c4 BIGINT COMMENT 'tag:5',
c5 BIGINT COMMENT 'tag:6',
PRIMARY KEY (pk1,pk2)
);
SQL
}
teardown() {
teardown_common
}
@test "create a table with a schema file and examine repo" {
# Remove the docs, because they will show up in the diff below and break the lines[x] assertions.
rm LICENSE.md
rm README.md
run dolt ls
[ "$status" -eq 0 ]
[[ "${lines[1]}" =~ "test" ]] || false
run dolt sql -q "select * from test"
[ "$status" -eq 0 ]
[[ "$output" =~ pk1[[:space:]]+\|[[:space:]]+pk2[[:space:]]+\|[[:space:]]+c1[[:space:]]+\|[[:space:]]+c2[[:space:]]+\|[[:space:]]+c3[[:space:]]+\|[[:space:]]+c4[[:space:]]+\|[[:space:]]+c5 ]] || false
run dolt diff
[ "$status" -eq 0 ]
[ "${lines[0]}" = "diff --dolt a/test b/test" ]
[ "${lines[1]}" = "added table" ]
run dolt status
[ "$status" -eq 0 ]
[[ "$output" =~ "Untracked files" ]] || false
[[ "$output" =~ "new table:" ]] || false
}
@test "add a row to a two primary table using dolt table put-row" {
dolt add test
dolt commit -m "added test table"
run dolt sql -q "insert into test values (0, 0, 1, 2, 3, 4, 5)"
[ "$status" -eq 0 ]
run dolt diff
[ "$status" -eq 0 ]
[[ "$output" =~ \+[[:space:]]+\|[[:space:]]+0[[:space:]]+\|[[:space:]]+0 ]] || false
}
@test "add a row where one of the primary keys is different, not both" {
dolt sql -q "insert into test values (0, 0, 1, 2, 3, 4, 5)"
run dolt sql -q "insert into test values (0, 1, 1, 2, 3, 4, 10)"
[ "$status" -eq 0 ]
run dolt sql -q "select * from test"
[ "$status" -eq 0 ]
[ "${#lines[@]}" -eq 6 ]
[[ "$output" =~ \|[[:space:]]+5 ]] || false
[[ "$output" =~ \|[[:space:]]+10 ]] || false
}
@test "overwrite a row with two primary keys" {
dolt sql -q "insert into test values (0, 0, 1, 2, 3, 4, 5)"
run dolt sql -q "replace into test values (0, 0, 1, 2, 3, 4, 10)"
[ "$status" -eq 0 ]
run dolt sql -q "select * from test"
[ "$status" -eq 0 ]
[ "${#lines[@]}" -eq 5 ]
[[ ! "$output" =~ \|[[:space:]]+5 ]] || false
[[ "$output" =~ \|[[:space:]]+10 ]] || false
}
@test "interact with a multiple primary key table with sql" {
run dolt sql -q "insert into test (pk1,pk2,c1,c2,c3,c4,c5) values (0,0,6,6,6,6,6)"
[ "$status" -eq 0 ]
[[ "$output" =~ "Query OK, 1 row affected" ]] || false
run dolt sql -q "select * from test"
[ "$status" -eq 0 ]
[[ "$output" =~ "c5" ]] || false
[[ "$output" =~ "6" ]] || false
run dolt sql -q "insert into test (pk1,pk2,c1,c2,c3,c4,c5) values (0,1,7,7,7,7,7),(1,0,8,8,8,8,8)"
[ "$status" -eq 0 ]
[[ "$output" =~ "Query OK, 2 rows affected" ]] || false
run dolt sql -q "select * from test"
[ "$status" -eq 0 ]
[[ "$output" =~ "c5" ]] || false
[[ "$output" =~ "7" ]] || false
[[ "$output" =~ "8" ]] || false
run dolt sql -q "select * from test where pk1=1"
[ "$status" -eq 0 ]
[[ "$output" =~ "c5" ]] || false
[[ "$output" =~ "8" ]] || false
[[ ! "$output" =~ "6" ]] || false
run dolt sql -q "insert into test (pk1,pk2,c1,c2,c3,c4,c5) values (0,1,7,7,7,7,7)"
[ "$status" -eq 1 ]
[[ "$output" =~ "duplicate primary key" ]] || false
run dolt sql -q "insert into test (pk1,c1,c2,c3,c4,c5) values (0,6,6,6,6,6)"
[ "$status" -eq 1 ]
[ "$output" = "column name 'pk2' is non-nullable but attempted to set default value of null" ] || false
run dolt sql -q "insert into test (c1,c2,c3,c4,c5) values (6,6,6,6,6)"
[ "$status" -eq 1 ]
[ "$output" = "column name 'pk1' is non-nullable but attempted to set default value of null" ] || false
}