Files
dolt/integration-tests/bats/json-oldformat.bats

30 lines
1.3 KiB
Bash

#!/usr/bin/env bats
load $BATS_TEST_DIRNAME/helper/common.bash
# This BATS test attempts to read JSON documents that were written prior to v1.40
# This function was used to create the dolt repo used for this test. It is not run during testing.
create_repo() {
dolt init
dolt sql -q "CREATE TABLE jsonTable(pk int primary key, j json);"
dolt sql -q 'INSERT INTO jsonTable( with recursive cte (pk, j) as ( select 0, JSON_OBJECT("K", "V") union all select pk+1, JSON_INSERT(j, CONCAT("$.k", pk), j) from cte where pk < 20 ) select * from cte );'
dolt add .
dolt commit -m "create json table"
}
setup() {
cp -r $BATS_TEST_DIRNAME/json-oldformat-repo/ $BATS_TMPDIR/dolt-repo-$$
cd $BATS_TMPDIR/dolt-repo-$$
}
@test "json-oldformat: verify queries" {
run dolt sql -q "SELECT pk, JSON_EXTRACT(j, '$.k10.k5.k3.k2') FROM jsonTable WHERE pk = 12;"
[[ "$output" =~ '{"K": "V", "k0": {"K": "V"}, "k1": {"K": "V", "k0": {"K": "V"}}}' ]] || false
run dolt sql -q "SELECT pk, JSON_VALUE(j, '$.k8.k6.k4.k1') FROM jsonTable WHERE pk = 12;"
[[ "$output" =~ '{"K": "V", "k0": {"K": "V"}}' ]] || false
run dolt sql -q "SELECT pk, JSON_EXTRACT(JSON_INSERT(j, '$.k9.k6.k1.TESTKEY', 'TESTVALUE'), '$.k9.k6.k1') FROM jsonTable WHERE pk = 12;"
[[ "$output" =~ '{"K": "V", "k0": {"K": "V"}, "TESTKEY": "TESTVALUE"}' ]] || false
}