diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml new file mode 100644 index 00000000..76288963 --- /dev/null +++ b/.github/workflows/go.yml @@ -0,0 +1,46 @@ +# This workflow will build a golang project +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go + +name: Go + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.23' + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Install dependencies + run: | + go get . + + pip3 install "sqlglot[rs]" + + curl -LJO https://github.com/duckdb/duckdb/releases/download/v1.0.0/duckdb_cli-linux-amd64.zip + unzip duckdb_cli-linux-amd64.zip + chmod +x duckdb + sudo mv duckdb /usr/local/bin + duckdb -c 'INSTALL json from core' + duckdb -c 'SELECT extension_name, loaded, install_path FROM duckdb_extensions() where installed' + + - name: Build + run: go build -v + + - name: Test Binlog Replication + run: go test -v -p 1 --timeout 360s ./binlogreplication diff --git a/meta/provider.go b/meta/provider.go index 618eb655..90f8b8e5 100644 --- a/meta/provider.go +++ b/meta/provider.go @@ -50,8 +50,14 @@ func NewDBProvider(dataDir, dbFile string) (*DbProvider, error) { if err != nil { return nil, err } - // load json extension - _, err = storage.Exec("load json") + + // install the json extension + _, err = storage.Exec("INSTALL json") + if err != nil { + return nil, err + } + // load the json extension + _, err = storage.Exec("LOAD json") if err != nil { return nil, err }