From df9f423f69d3843e5143f83a4ac2794222105725 Mon Sep 17 00:00:00 2001 From: Caio Ricciuti Date: Sat, 25 May 2024 20:08:01 +0200 Subject: [PATCH] Resolve mix query method. --- .github/workflows/release.yml | 29 +++++++++++++++++++++++++++ src/providers/TabsStateContext.jsx | 32 +++++++++++++++++++++--------- 2 files changed, 52 insertions(+), 9 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c266ef6..daa5654 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,9 +39,38 @@ jobs: echo "New tag: $new_tag" echo "new_tag=$new_tag" >> $GITHUB_ENV + - name: Check if tag exists + id: tag_check + run: | + set -e # Fail on first error + + if git rev-parse "refs/tags/${{ env.new_tag }}" >/dev/null 2>&1; then + echo "Tag already exists." + + # Increment the minor version instead + new_minor=$((minor + 1)) + new_patch=0 + new_tag="v$major.$new_minor.$new_patch" + echo "New incremented tag: $new_tag" + echo "new_tag=$new_tag" >> $GITHUB_ENV + else + echo "Tag does not exist." + echo "new_tag=$new_tag" >> $GITHUB_ENV + - name: Create new tag run: | set -e # Fail on first error git tag ${{ env.new_tag }} git push origin ${{ env.new_tag }} + + - name: Create GitHub release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GHCR_PAT }} + with: + tag_name: ${{ env.new_tag }} + release_name: ${{ env.new_tag }} + body: "Automated release for tag ${{ env.new_tag }}" + draft: false + prerelease: false diff --git a/src/providers/TabsStateContext.jsx b/src/providers/TabsStateContext.jsx index 7659111..48bc805 100644 --- a/src/providers/TabsStateContext.jsx +++ b/src/providers/TabsStateContext.jsx @@ -161,6 +161,7 @@ export const TabsStateProvider = ({ children }) => { const runQuery = async (tabId, query) => { setIsLoadingQuery(true); + // Timeout function const timeout = (ms) => new Promise((_, reject) => @@ -173,18 +174,31 @@ export const TabsStateProvider = ({ children }) => { return; } - // if query has create or insert statements, show a warning - const isCreateOrInsert = - query.toLowerCase().includes("create") || - query.toLowerCase().includes("insert") || - query.toLowerCase().includes("alter") || - query.toLowerCase().includes("drop"); + // Function to check if the query is a create or insert statement + const isCreateOrInsert = (query) => { + const lowerQuery = query.toLowerCase(); + const createTableRegex = /\bcreate\s+table\b/; + const insertRegex = /\binsert\b/; + const alterRegex = /\balter\b/; + const dropTableRegex = /\bdrop\s+table\b/; + const dropColumnRegex = /\bdrop\s+column\b/; + const dropIndexRegex = /\bdrop\s+index\b/; + + return ( + createTableRegex.test(lowerQuery) || + insertRegex.test(lowerQuery) || + alterRegex.test(lowerQuery) || + dropTableRegex.test(lowerQuery) || + dropColumnRegex.test(lowerQuery) || + dropIndexRegex.test(lowerQuery) + ); + }; let result; let data; // Use Promise.race to set a timeout for the query execution - if (isCreateOrInsert) { + if (isCreateOrInsert(query)) { result = await Promise.race([ clickHouseClient.current.command({ query, @@ -210,7 +224,7 @@ export const TabsStateProvider = ({ children }) => { // If the result is successful before timeout updateQueryTab(tabId, { last_run: new Date().toISOString(), - tab_results: isCreateOrInsert + tab_results: isCreateOrInsert(query) ? [ { success: "true", @@ -218,7 +232,7 @@ export const TabsStateProvider = ({ children }) => { }, ] : data.data, - tab_results_statistics: isCreateOrInsert ? [] : data.statistics, + tab_results_statistics: isCreateOrInsert(query) ? [] : data.statistics, tab_errors: null, }); } catch (error) {