From 1200f9887a2c661522766abaa1bc0770008b9b22 Mon Sep 17 00:00:00 2001 From: Eric Radman Date: Fri, 1 Mar 2024 09:51:51 -0500 Subject: [PATCH 1/7] Use SSH deployment key to bump version and tag release candiate (#6789) To allow this workflow to run even though normal contributors are required to create a pull request. Steps: 1. Generate SSH key pair: ssh-keygen -t ed25519. No need for passphrases etc. 2. Add public key (.pub one) as a deploy key at Your repo -> Settings -> Security -> Deploy keys, check "Allow write access". 3. Add private key as a secret at Your repo -> Settings -> Security -> Secrets and variables -> Actions https://stackoverflow.com/a/76135647/1809872 Co-authored-by: github-actions --- .github/workflows/periodic-snapshot.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/periodic-snapshot.yml b/.github/workflows/periodic-snapshot.yml index 0b34dac52a..dbfb68c5a2 100644 --- a/.github/workflows/periodic-snapshot.yml +++ b/.github/workflows/periodic-snapshot.yml @@ -13,6 +13,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + ssh-key: ${{secrets.ACTION_PUSH_KEY}} - run: | date="$(date +%y.%m).0-dev" gawk -i inplace -F: -v q=\" -v tag=$date '/^ "version": / { print $1 FS, q tag q ","; next} { print }' package.json From 7cd03c797ce2d858c6d1a24b0000aa74f0978fd5 Mon Sep 17 00:00:00 2001 From: Eric Radman Date: Fri, 1 Mar 2024 11:05:12 -0500 Subject: [PATCH 2/7] Publish preview Docker image when release candidate is tagged (#6787) * Only respond to new tags ending with -dev * Use github account name to allow easier testing in a fork * Allow preview image to be referenced by a specific tag, or by latest tag redash/preview:24.02.0-dev redash/redash:preview Co-authored-by: github-actions --- .github/workflows/ci.yml | 90 ----------------------------- .github/workflows/preview-image.yml | 87 ++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 90 deletions(-) create mode 100644 .github/workflows/preview-image.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c8d780758d..6c42929c27 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -172,93 +172,3 @@ jobs: with: name: coverage path: coverage - - build-skip-check: - runs-on: ubuntu-22.04 - outputs: - skip: ${{ steps.skip-check.outputs.skip }} - steps: - - name: Skip? - id: skip-check - run: | - if [[ "${{ vars.DOCKER_USER }}" == '' ]]; then - echo 'Docker user is empty. Skipping build+push' - echo skip=true >> "$GITHUB_OUTPUT" - elif [[ "${{ secrets.DOCKER_PASS }}" == '' ]]; then - echo 'Docker password is empty. Skipping build+push' - echo skip=true >> "$GITHUB_OUTPUT" - elif [[ "${{ github.ref_name }}" != 'master' ]]; then - echo 'Ref name is not `master`. Skipping build+push' - echo skip=true >> "$GITHUB_OUTPUT" - else - echo 'Docker user and password are set and branch is `master`.' - echo 'Building + pushing `preview` image.' - echo skip=false >> "$GITHUB_OUTPUT" - fi - - build-docker-image: - runs-on: ubuntu-22.04 - needs: - - backend-unit-tests - - frontend-unit-tests - - frontend-e2e-tests - - build-skip-check - if: needs.build-skip-check.outputs.skip == 'false' - steps: - - if: github.event.pull_request.mergeable == 'false' - name: Exit if PR is not mergeable - run: exit 1 - - uses: actions/checkout@v4 - with: - fetch-depth: 1 - ref: ${{ github.event.pull_request.head.sha }} - - uses: actions/setup-node@v3 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'yarn' - - name: Install Dependencies - run: | - npm install --global --force yarn@1.22.19 - yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 - - - name: Set up QEMU - timeout-minutes: 1 - uses: docker/setup-qemu-action@v2.2.0 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Login to DockerHub - uses: docker/login-action@v2 - with: - username: ${{ vars.DOCKER_USER }} - password: ${{ secrets.DOCKER_PASS }} - - - name: Bump version - id: version - run: | - set -x - .ci/update_version - VERSION=$(jq -r .version package.json) - VERSION_TAG="${VERSION}.b${GITHUB_RUN_ID}.${GITHUB_RUN_NUMBER}" - echo "VERSION_TAG=$VERSION_TAG" >> "$GITHUB_OUTPUT" - - - name: Build and push preview image to Docker Hub - uses: docker/build-push-action@v4 - with: - push: true - tags: | - redash/redash:preview - redash/preview:${{ steps.version.outputs.VERSION_TAG }} - context: . - build-args: | - test_all_deps=true - cache-from: type=gha - cache-to: type=gha,mode=max - platforms: linux/amd64 - env: - DOCKER_CONTENT_TRUST: true - - - name: "Failure: output container logs to console" - if: failure() - run: docker compose logs diff --git a/.github/workflows/preview-image.yml b/.github/workflows/preview-image.yml new file mode 100644 index 0000000000..eaefc793bc --- /dev/null +++ b/.github/workflows/preview-image.yml @@ -0,0 +1,87 @@ +name: Preview Image +on: + push: + tags: + - '*-dev' + +env: + NODE_VERSION: 18 + +jobs: + build-skip-check: + runs-on: ubuntu-22.04 + outputs: + skip: ${{ steps.skip-check.outputs.skip }} + steps: + - name: Skip? + id: skip-check + run: | + if [[ "${{ vars.DOCKER_USER }}" == '' ]]; then + echo 'Docker user is empty. Skipping build+push' + echo skip=true >> "$GITHUB_OUTPUT" + elif [[ "${{ secrets.DOCKER_PASS }}" == '' ]]; then + echo 'Docker password is empty. Skipping build+push' + echo skip=true >> "$GITHUB_OUTPUT" + else + echo 'Docker user and password are set and branch is `master`.' + echo 'Building + pushing `preview` image.' + echo skip=false >> "$GITHUB_OUTPUT" + fi + + build-docker-image: + runs-on: ubuntu-22.04 + needs: + - build-skip-check + if: needs.build-skip-check.outputs.skip == 'false' + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + ref: ${{ github.event.push.after }} + + - uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + cache: 'yarn' + + - name: Install Dependencies + run: | + npm install --global --force yarn@1.22.19 + yarn cache clean && yarn --frozen-lockfile --network-concurrency 1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ vars.DOCKER_USER }} + password: ${{ secrets.DOCKER_PASS }} + + - name: Set version + id: version + run: | + set -x + .ci/update_version + VERSION_TAG=$(jq -r .version package.json) + echo "VERSION_TAG=$VERSION_TAG" >> "$GITHUB_OUTPUT" + + - name: Build and push preview image to Docker Hub + uses: docker/build-push-action@v4 + with: + push: true + tags: | + ${{ github.repository_owner }}/redash:preview + ${{ github.repository_owner }}/preview:${{ steps.version.outputs.VERSION_TAG }} + context: . + build-args: | + test_all_deps=true + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: linux/amd64 + env: + DOCKER_CONTENT_TRUST: true + + - name: "Failure: output container logs to console" + if: failure() + run: docker compose logs From 95a45bb4dc959d43a6b8d227e2c889562328509d Mon Sep 17 00:00:00 2001 From: Eric Radman Date: Fri, 1 Mar 2024 13:21:22 -0500 Subject: [PATCH 3/7] Snapshot: 24.03.0-dev (#6791) Co-authored-by: github-actions --- package.json | 2 +- pyproject.toml | 2 +- redash/__init__.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 630b1e1430..8386da93a4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redash-client", - "version": "24.02.0-dev", + "version": "24.03.0-dev", "description": "The frontend part of Redash.", "main": "index.js", "scripts": { diff --git a/pyproject.toml b/pyproject.toml index a731f6d4c7..1d38bc8d1c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ force-exclude = ''' [tool.poetry] name = "redash" -version = "24.02.0-dev" +version = "24.03.0-dev" description = "Make Your Company Data Driven. Connect to any data source, easily visualize, dashboard and share your data." authors = ["Arik Fraimovich "] # to be added to/removed from the mailing list, please reach out to Arik via the above email or Discord diff --git a/redash/__init__.py b/redash/__init__.py index ea693b23d6..2b61823912 100644 --- a/redash/__init__.py +++ b/redash/__init__.py @@ -14,7 +14,7 @@ from redash.destinations import import_destinations from redash.query_runner import import_query_runners -__version__ = "24.02.0-dev" +__version__ = "24.03.0-dev" if os.environ.get("REMOTE_DEBUG"): From b09a2256dc7f0ccf62d3b7b467a1a100915d6e6d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Mar 2024 18:51:54 +0000 Subject: [PATCH 4/7] Bump es5-ext from 0.10.53 to 0.10.63 (#6784) Bumps [es5-ext](https://github.com/medikoo/es5-ext) from 0.10.53 to 0.10.63. - [Release notes](https://github.com/medikoo/es5-ext/releases) - [Changelog](https://github.com/medikoo/es5-ext/blob/main/CHANGELOG.md) - [Commits](https://github.com/medikoo/es5-ext/compare/v0.10.53...v0.10.63) --- updated-dependencies: - dependency-name: es5-ext dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 68 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 53 insertions(+), 15 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0d837e1cb2..2ad8b4b2e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1897,7 +1897,7 @@ "@redash/viz@file:viz-lib": version "1.0.0" dependencies: - axios "0.27.2" + axios "0.28.0" axios-auth-refresh "3.3.6" beautifymarker "^1.0.7" chroma-js "^1.3.6" @@ -3187,6 +3187,15 @@ axios@0.27.2: follow-redirects "^1.14.9" form-data "^4.0.0" +axios@0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.28.0.tgz#801a4d991d0404961bccef46800e1170f8278c89" + integrity sha512-Tu7NYoGY4Yoc7I+Npf9HhUMtEEpV7ZiLH9yndTCoNhcpBH0kwcvFbzYN9/u5QKI5A6uefjsNNWaz5olJVYS62Q== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + axios@^0.21.1: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" @@ -5806,21 +5815,22 @@ es-to-primitive@^1.2.0, es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@~0.10.14: + version "0.10.63" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.63.tgz#9c222a63b6a332ac80b1e373b426af723b895bd6" + integrity sha512-hUCZd2Byj/mNKjfP9jXrdVZ62B8KuA/VoK7X8nUh5qT+AxDmcbvZz041oDVZdbIN1qW6XY9VDNwzkvKnZvK2TQ== dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + esniff "^2.0.1" + next-tick "^1.1.0" es6-error@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== -es6-iterator@^2.0.3, es6-iterator@~2.0.3: +es6-iterator@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= @@ -5839,7 +5849,7 @@ es6-promise@^4.2.8: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== -es6-symbol@^3.1.1, es6-symbol@~3.1.3: +es6-symbol@^3.1.1, es6-symbol@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== @@ -6120,6 +6130,16 @@ eslint@^6.7.2: text-table "^0.2.0" v8-compile-cache "^2.0.3" +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + espree@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" @@ -6178,6 +6198,14 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + eventemitter2@6.4.7: version "6.4.7" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d" @@ -6690,6 +6718,11 @@ follow-redirects@^1.14.0, follow-redirects@^1.14.9: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +follow-redirects@^1.15.0: + version "1.15.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" + integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== + font-atlas@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/font-atlas/-/font-atlas-2.1.0.tgz#aa2d6dcf656a6c871d66abbd3dfbea2f77178348" @@ -10490,10 +10523,10 @@ neo-async@^2.5.0, neo-async@^2.6.1: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== nextafter@^1.0.0: version "1.0.0" @@ -11747,7 +11780,7 @@ proxy-from-env@1.0.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== -proxy-from-env@^1.0.0: +proxy-from-env@^1.0.0, proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== @@ -14761,6 +14794,11 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + typed-array-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" From 3997916d772f77cbdc03e14a41e283b6aa6cd397 Mon Sep 17 00:00:00 2001 From: Eric Radman Date: Fri, 1 Mar 2024 16:42:15 -0500 Subject: [PATCH 5/7] Always push images to hub.docker.com/u/redash (#6792) Using github.repository_owner name was convenient for testing this action, but is not correct since account names do not match. Git Hub: getredash/ Docker Hub: redash/ Co-authored-by: github-actions --- .github/workflows/preview-image.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/preview-image.yml b/.github/workflows/preview-image.yml index eaefc793bc..cf8b024103 100644 --- a/.github/workflows/preview-image.yml +++ b/.github/workflows/preview-image.yml @@ -71,8 +71,8 @@ jobs: with: push: true tags: | - ${{ github.repository_owner }}/redash:preview - ${{ github.repository_owner }}/preview:${{ steps.version.outputs.VERSION_TAG }} + redash/redash:preview + redash/preview:${{ steps.version.outputs.VERSION_TAG }} context: . build-args: | test_all_deps=true From 11794b3fe32481d96694d0c3bd8e19196f88f8e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Mar 2024 04:46:01 +0000 Subject: [PATCH 6/7] Bump es5-ext from 0.10.53 to 0.10.63 in /viz-lib (#6782) Bumps [es5-ext](https://github.com/medikoo/es5-ext) from 0.10.53 to 0.10.63. - [Release notes](https://github.com/medikoo/es5-ext/releases) - [Changelog](https://github.com/medikoo/es5-ext/blob/main/CHANGELOG.md) - [Commits](https://github.com/medikoo/es5-ext/compare/v0.10.53...v0.10.63) --- updated-dependencies: - dependency-name: es5-ext dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/yarn.lock | 50 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/viz-lib/yarn.lock b/viz-lib/yarn.lock index 0e6304ae8e..5d45c5a37c 100644 --- a/viz-lib/yarn.lock +++ b/viz-lib/yarn.lock @@ -4263,16 +4263,17 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@~0.10.14: + version "0.10.63" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.63.tgz#9c222a63b6a332ac80b1e373b426af723b895bd6" + integrity sha512-hUCZd2Byj/mNKjfP9jXrdVZ62B8KuA/VoK7X8nUh5qT+AxDmcbvZz041oDVZdbIN1qW6XY9VDNwzkvKnZvK2TQ== dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + esniff "^2.0.1" + next-tick "^1.1.0" -es6-iterator@^2.0.3, es6-iterator@~2.0.3: +es6-iterator@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= @@ -4286,7 +4287,7 @@ es6-promise@^4.2.8: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== -es6-symbol@^3.1.1, es6-symbol@~3.1.3: +es6-symbol@^3.1.1, es6-symbol@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== @@ -4419,6 +4420,16 @@ eslint@^7.14.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + espree@^7.3.0, espree@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" @@ -4462,6 +4473,14 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + events@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -7500,10 +7519,10 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== nextafter@^1.0.0: version "1.0.0" @@ -10136,6 +10155,11 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + typed-array-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" From 34723e2f3e946dbb65c4f828db6eb54eda570b7d Mon Sep 17 00:00:00 2001 From: Stefan Negele Date: Tue, 5 Mar 2024 10:29:47 +0100 Subject: [PATCH 7/7] Add RisingWave support (#6776) --- README.md | 1 + .../app/assets/images/db-logos/risingwave.png | Bin 0 -> 9913 bytes redash/query_runner/risingwave.py | 45 ++++++++++++++++++ redash/settings/__init__.py | 1 + 4 files changed, 47 insertions(+) create mode 100644 client/app/assets/images/db-logos/risingwave.png create mode 100644 redash/query_runner/risingwave.py diff --git a/README.md b/README.md index 63b78b1c9d..15c09ee0f7 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help - Python - Qubole - Rockset +- RisingWave - Salesforce - ScyllaDB - Shell Scripts diff --git a/client/app/assets/images/db-logos/risingwave.png b/client/app/assets/images/db-logos/risingwave.png new file mode 100644 index 0000000000000000000000000000000000000000..ae4a13f1290173e1b2bb81f6faa5bdf1c0c77ed6 GIT binary patch literal 9913 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 literal 0 HcmV?d00001 diff --git a/redash/query_runner/risingwave.py b/redash/query_runner/risingwave.py new file mode 100644 index 0000000000..2cc241d095 --- /dev/null +++ b/redash/query_runner/risingwave.py @@ -0,0 +1,45 @@ +from redash.query_runner import register +from redash.query_runner.pg import PostgreSQL + + +class RisingWave(PostgreSQL): + @classmethod + def type(cls): + return "risingwave" + + @classmethod + def name(cls): + return "RisingWave" + + def _get_tables(self, schema): + query = """ + SELECT s.nspname as table_schema, + c.relname as table_name, + a.attname as column_name, + null as data_type + FROM pg_class c + JOIN pg_namespace s + ON c.relnamespace = s.oid + AND s.nspname NOT IN ('pg_catalog', 'information_schema', 'rw_catalog') + JOIN pg_attribute a + ON a.attrelid = c.oid + AND a.attnum > 0 + AND NOT a.attisdropped + WHERE c.relkind IN ('m', 'f', 'p') + + UNION + + SELECT table_schema, + table_name, + column_name, + data_type + FROM information_schema.columns + WHERE table_schema NOT IN ('pg_catalog', 'information_schema', 'rw_catalog'); + """ + + self._get_definitions(schema, query) + + return list(schema.values()) + + +register(RisingWave) diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index b7d30c693d..f62ba611e0 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -339,6 +339,7 @@ def email_server_is_configured(): "redash.query_runner.ignite", "redash.query_runner.oracle", "redash.query_runner.e6data", + "redash.query_runner.risingwave", ] enabled_query_runners = array_from_string(