-
Notifications
You must be signed in to change notification settings - Fork 86
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Recursive chown is really slow #388
Comments
This is likely because every file has to be copied up on a CoW filesystem. This also means data is duplicated in the image. How many/what size are these files? Can you add them in with the correct uid/gid instead of chowning in the build? (Note there is a "--chown" flag on the COPY instruction) |
Hi, thank for your reply. I will try the |
I noticed the This is important when you do not know the user ahead of time and have it stored in a variable or when you do not wish to hardcode the user into many places inside the Dockerfile, so that you do not need to change so many places when changing the user / username. Should this be a new issue? |
I also started running into the issue today while debugging a container that is running The more interesting part is that this same container takes only 2 minutes to start up on an Ubuntu 14.04 server (4.4 kernel), but with Ubuntu 16.04 (4.15 kernel) the time required increases significantly. Docker versions on both servers are the same EDIT: |
The good news, in the new kernel overlay does a meta-data only copy for this instead of copying the whole file. |
@cpuguy83 Which version will that be included in? |
@Grant1219 Looks like 4.19 -- https://cateee.net/lkddb/web-lkddb/OVERLAY_FS_METACOPY.html |
Does switching to a newer kernel really help in this case? |
If you switch and turn on meta-only copy by default in the kernel config, I think it would make a huge difference, but I have not tested yet. Also keep in mind this is only available in 4.19 which is still in the RC phase. |
The smaller the sizes and greater number of files the less effective it would be, I suspect. |
I just migrated from my Ubuntu 14.04 VM to an 18.04 VM and attempted to bring up the same docker image in a container on the same version of docker (18.06.1). We also do a similar chown in our entrypoint. It's FAR slow in 18.04 than it was in 14.04. Both are set up to use overlay2. |
Okay, this seems to be real issue and not a small one. @kavehv you say it gets worse on |
14.04:
18.04:
|
Definitely seems like a consistent problem with 18.04 and overlay2. We see it on more than one system here. Is this the right project to report this issue? |
Probably best to report to Canonical in this case. |
FWIW, the same thing appears to happen on 16.04 as well (similar 4.15 kernel version):
Is it ubuntu or the kernel? Does someone more familiar with docker-ce need to file a bug? |
Also, modifying |
I have resolved this issue for my specific case (Ubuntu 16.04 and Docker 18.03). It turned out to be the change of the default IO scheduler from "deadline" on 14.04 to "cfq" on 16.04. I did some benchmarking outside of Docker (and inside) and found the same slowness for any kind of write operation. Although it may not completely resolve the performance differences, it may be worth checking which scheduling algorithm is used for IO on the machines you are seeing the issues on. |
This is a good find, but are you sure this wasn't changed in 14.04? |
Any updates from the devs of the repo? If this repo is not the correct when, where should I post this. I see this is becoming bigger problem with docker? |
Here is a full Dockerfile example (with WordPress plugins) for testing the
|
This problem does not only occur on Ubuntu 18.04, I have the same problem on System information: Minimal test Dockerfile with Centos
|
An alternative to COPY --chown, is to just install all as root, then drop priv with USER, the user will need to write only in volumes and tempfiles i suppose. |
This only improves partially the performance. |
FYI, there appears to be some other grumblings wrt overlayfs
performance since 4.15. Has anyone compared chown performance against
older versions of the kernel?
…On Mon, Oct 15, 2018 at 8:44 AM Kristiyan ***@***.***> wrote:
An alternative to COPY --chown, is to just install all as root, then drop priv with USER, the user will need to write only in volumes and tempfiles i suppose.
This only improves partially the performance.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
--
- Brian Goff
|
Experiencing the same slowdown in 18.04(kernel 4.15) vs 16.04(kernel 4.4). |
My suggestion completely removes the performance bottleneck, I don't understand how i can be a "partial" solution, can you elaborate please ? Not to mention, how ugly is a chown call inside a Dockerfile as that's a matter of taste (which not everybody will share). Thanks ;) |
Removing the performance bottleneck would mean for me that chown inside dockerfile / docker container takes exactly the same time as on host machine (several ms) which is definitely not the case. |
Unfortunately the bottleneck comes from overlayfs in the kernel. It would probably be best to report the issue to your distro provider to get more eyes on the issue. As for Without buildkit, I believe |
This is not a viable workaround for those of us running into this issue in the docker entrypoint. A good number of us who have reported this issue use a recursive chown in the entrypoint because we need to adapt some things in the image to the UID/GID of the user running the container. There's no way [that I'm aware of] to solve for this in the Dockerfile. |
I see. This issue needs fixing soon!
…On Mon, 18 Oct 2021 at 2:40 PM, Andreas Perhab ***@***.***> wrote:
This issue not affects chown (can be workarrounded with COPY --chown=)
but also chmod for which no workarround exists (AFAIK).
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#388 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AFRBZHNW3R6CW27FPDKP6KDUHPP75ANCNFSM4FOGNQ6A>
.
|
More efficient to chown while COPY for large stacks of files as per docker/for-linux#388
I gave it two hours and it still hasn't finished |
Before running |
Using --chown on the COPY command solved it for me |
That's only half a solution, because it does not work with environment variables as user names. |
The newest Dockerfile parser handles variables on flags. FROM busybox
ENV THE_USER=nobody
COPY --chown=${THE_USER} foo /foo
RUN ls -lh /foo
|
In my case, I just need to run |
Its more efficient to chown while COPY for large stacks of files as per docker/for-linux#388
still no solution here? |
When I was dealing with this issue, upgrading past linux kernel 4.19 resolved my issue. Versions past 4.19 have a patch that makes the overlay2 filesystem use metadata-only copyup during chown rather than a regular copy-up which is a significant performance boost. I think this github issue is perhaps not specific enough in terms of whether that speed increase was significant enough to close the issue or keep open. There are other changes you can make as well like Hope that helps @andorfermichael . I ran into this issue a couple years ago and just kept following it. I'm not a docker/for-linux developer or anything. |
Yes To build my nodejs app, Instead of: FROM node:16-alpine AS deps
RUN apk add --no-cache libc6-compat
RUN npm install -g npm@latest
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
FROM node:16-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build
# This is slow!
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser
CMD ["npm", "run", "start"] I did: FROM node:16-alpine AS deps
RUN apk add --no-cache libc6-compat
RUN npm install -g npm@latest
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
FROM node:16-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
# (ignore files in .dockerignore)
COPY . .
RUN npm run build
FROM node:16-alpine AS runner
WORKDIR /app
RUN addgroup --system --gid 1001 appgroup
RUN adduser --system --uid 1001 appuser
# Faster!
COPY --from=builder --chown=appuser:appgroup /app ./
USER appuser
CMD ["npm", "run", "start"] |
I had the problem of The fix: Add a
|
commit ad7d30f91de64a291eb89892c713bd0067c47ecc Author: myonlylonely <myonlylonely@users.noreply.github.com> Date: Wed Apr 5 21:59:36 2023 +0800 Bump mysqlclient from 1.3.14 to 2.1.1, memsql from 3.0.0 to 3.2.0, fixing MySQL multi statement support (#5957) commit 5b9fd40dc700c2fc14c31356aa551b09f7094d75 Author: Shubham Jain <shubhrjain7@gmail.com> Date: Mon Mar 27 21:11:18 2023 +0100 Add liveness check for workers (#5886) * Add liveness check script for workers closes #5885 * delete extra script * Rename worker_healthcheck -> workers_healthcheck --------- Co-authored-by: Arik Fraimovich <arik@arikfr.com> commit 0b86c76552aff575488ebe15c107fd29fb9ff4a5 Author: Jeremy <hantmac@outlook.com> Date: Tue Mar 28 04:08:53 2023 +0800 Fix/databend params (#5937) * fix: databend params * add databend logo * fix log * fix log * Update redash/query_runner/databend.py Co-authored-by: Arik Fraimovich <arik@arikfr.com> --------- Co-authored-by: Arik Fraimovich <arik@arikfr.com> commit 35b2430ff9e4d1a71b201697360f0b763f062a8f Author: David Choi <themars@gmail.com> Date: Sat Mar 25 06:55:34 2023 +0900 Fix group not found message. (#5935) commit 65d0eb72f585e05d141b9c8f2233fa6b77bd3d3f Author: Arik Fraimovich <arik@arikfr.com> Date: Fri Mar 24 14:36:58 2023 -0700 Update development workflow for Apple Silicon, Node version, default port, and maildev image (#5932) * Update ngines definition to allow for newer versions of Node. With Node version 19 I stumbled into some issues so for now bumped it to v16, until we get to updating the libraries we use. * docker-compose.yml updates: 1. Switch to newer maildev docker image. 2. Update local port to 5001 as 5000 seems to be used by a system process now. * Update pymssql and pyarrow. Also commented out ibm-db until we have a way to not install it only on ARM. commit 8487876e7f02d40a7a700557cee35abf1c334902 Author: Jeremy <hantmac@outlook.com> Date: Tue Mar 21 23:21:56 2023 +0800 feat: New support databend for redash (#5902) * feat: New support databend for redash * fix commit c08ef9b5026a36214bbb788dc13e375fbc454d33 Author: Genki Sugawara <sugawara@winebarrel.jp> Date: Mon Mar 20 23:40:16 2023 +0900 Add "set -e" to docker_build (#5896) commit 28b0a2379d34b1838da13c80a504d93f20f4f14c Author: Arik Fraimovich <arik@arikfr.com> Date: Mon Mar 20 07:39:21 2023 -0700 Remove extensions mechanism (#5895) * Remove extensions mechanism. * Missing change. commit 0dfe726ec8be6350d85af01567bf3d0d6651eb21 Author: Zach Liu <zachliu@users.noreply.github.com> Date: Mon Mar 20 10:38:45 2023 -0400 see https://discuss.redash.io/t/redash-datasource-connection-test-fails/9989 (#5898) commit a1e3369ba3a919bf8b57ab234a44eb923497e53a Author: Arik Fraimovich <arik@arikfr.com> Date: Sat Mar 18 08:03:20 2023 -0700 Update references from Discourse to Discussions. (#5916) commit 7ec443c80021920833dc1f12dc76e30dce11aa7b Author: Peter Lee <yankeeguyu@gmail.com> Date: Fri Feb 17 22:36:25 2023 +0800 fix word spell (#5859) Co-authored-by: guyu <guyu@fordeal.com> commit d6dbc64cfe4ccd9a62f1a9b62ebf602442ee120c Author: Izumu KUSUNOKI <izumu.kusunoki@gmail.com> Date: Fri Feb 17 23:24:49 2023 +0900 bug fix SAML_LOGIN_ENABLED setting logic (#5784) commit 82361e705453bf5ab21e07ce15739b4c6cd0001e Author: tsbkw <s-tsubokawa@mercari.com> Date: Thu Feb 16 11:47:56 2023 +0900 fix: Support importlib_metadata v5.0.0 (#5840) * fix: Support importlib_metadata v5.0.0 importlib_metadata removed compatibility shims for deprecated entry point interfaces. see: https://github.com/python/importlib_metadata/blob/main/CHANGES.rst#v500 Filter result of entry_points function by group parameter. see: https://importlib-metadata.readthedocs.io/en/latest/api.html#importlib_metadata.entry_points * fix: Enable to run in older python version In circleci frontend-unit-tests, old node image is used and python 3.5 is used. Support both old version and latest version by checking ijmportlib_metadata version commit 5cf13afafe4a13c8db9da645d9667bc26fd118c5 Author: Dmitriy <apollonin@gmail.com> Date: Thu Jan 5 05:12:16 2023 -0700 Improve visibility of error message during schema retrieval (#5879) * handle query execution error in one place. increase ability to debug issues with schema retrieval * split message and details for error reporting Co-authored-by: Dmitriy Apollonin <dmitriy.apollonin@aspireiq.com> commit 328099137de07736485a28d6c2e185ac760cf0bb Author: kevinchiang <kchiang@tesla.com> Date: Thu Oct 6 23:45:03 2022 -0700 Microsoft Teams Webhook alert destination (#5691) * Microsoft Teams Webhook alert destination * Text formatting and new image for Microsoft Teams Webhook * Comment on how to build frontend * Add title to clarify webhook URL * Make the message into a configurable template. commit a863c8c08c5610180a1d798fb0c0bd16e6e2633d Author: Xiang Fu <xiangfu.1024@gmail.com> Date: Thu Oct 6 23:40:00 2022 -0700 Adding Apache Pinot Query Runner (#5798) * Adding Apache Pinot integration * address comments commit 71458e5697e402badac28902bcc61a7f4ddac413 Author: Ikko Ashimine <eltociear@gmail.com> Date: Sat Sep 24 15:01:31 2022 +0900 Fix typo in users.py (#5818) seperated -> separated commit 75cb59f4befc49cc10ceeff238c5fd0ad421b072 Author: trigremm <askhat.molkenov@gmail.com> Date: Wed Aug 24 20:26:09 2022 +0600 Databricks ODBC Driver: follow redirects (#5814) Use curl --location commit 2935844e88ef87a5a4f0957026629c362c910c27 Author: luc-x41 <45362069+luc-x41@users.noreply.github.com> Date: Wed Aug 24 15:51:22 2022 +0200 README: add MariaDB to supported data sources (#5808) commit 4186f8303ee28d5cde7ca248c57df9023eba6224 Author: Jesse <jesse@whitehouse.dev> Date: Wed Jul 20 07:47:44 2022 -0500 New ElasticSearch Query Runner (#5794) - A runner supporting the newest versions of ES, aggregation, nested aggregations and nested fields. - A runner for the SQL OpenDistro flavor - A runner for the SQL X-Pack flavor Co-authored-by: Nicolas Le Manchet <nicolas@lemanchet.fr> Co-authored-by: wwl717195673 <717195673@qq.com> commit 0712abb3590046d96d7252e7e4575875aefe5b84 Author: Aniket Kulkarni <aniket-s-kulkarni@users.noreply.github.com> Date: Fri Jul 15 15:29:28 2022 -0400 README: update list of supported data sources (#5790) Co-authored-by: Jesse Whitehouse <jesse@whitehouse.dev> commit 9abc4f5f1e8ef3e644f907eb4bde1dffefc05fc4 Author: Jesse <jesse@whitehouse.dev> Date: Tue Jul 12 12:27:20 2022 -0500 Clickhouse: Multi-statements support (#5792) ClickHouse query runner splits query into several and execute each query in turn. The result of the last execution is returned. Implementation uses ClickHouse sessions in the HTTP protocol. `session_id` is generated for the first query and then it is used with the subsequent queries (together with the `session_check` parameter). If query runner gets a success response with empty body from ClickHouse (for example, in case of temporary table creation request) query runner returns empty response. authored-by: Liubov Ulitina <ulitinalm@vl.ru> commit f0a390b11a5fabb75062607e46180134ce3ee994 Author: Aniket Kulkarni <aniket-s-kulkarni@users.noreply.github.com> Date: Fri Jul 8 14:10:49 2022 -0400 New Query Runner: Netezza Performance Server (#5771) Co-authored-by: Jesse <jwhitehouse@airpost.net> commit 3624f8f2be40badefc053d098f793a17ec11d3ee Author: Jacek Jabłoński <35669512+jacek-jablonski@users.noreply.github.com> Date: Wed Jul 6 23:00:56 2022 +0200 Feature: allow configuration / increase of gunicorn timeout (#5783) commit 65f7b6c5affbcd59eb3d0dc6c6b3b6b08256db34 Author: Jesse <jesse@whitehouse.dev> Date: Wed Jul 6 08:16:36 2022 -0500 Sort Python safe built-ins (#5781) Co-authored-by: Jiajie Zhong <zhongjiajie955@hotmail.com> Co-authored-by: Jiajie Zhong <zhongjiajie955@gmail.com> commit 412c82940a60a71d567f463958bbb48bfeebc967 Author: Bryan Yang <kenshin2004528@gmail.com> Date: Wed Jul 6 19:53:31 2022 +0800 New Query Runner: Arango query runner (#5124) Co-authored-by: Hugo Gresse <hugo.gresse@gmail.com> commit e2bad61e5bb526b2e898266f95973eb8fcc48bee Author: Arik Fraimovich <arik@arikfr.com> Date: Sun Jul 3 11:13:59 2022 -0700 Add unarchive button to dashboard (#4697) Co-authored-by: Jesse Whitehouse <jesse@whitehouse.dev> commit 173cbdb2d60b5daeb9b2a46486212b5acb6ce9de Author: Adam Zwakenberg <adam@adamzwakk.com> Date: Sun Jul 3 14:04:09 2022 -0400 Added clear button for query-based parameter inputs (#5710) commit fc37c1ecfcd4a5f93873f764e4fd36e8aa76ecb5 Author: Jiajie Zhong <zhongjiajie955@hotmail.com> Date: Sun Jul 3 12:09:24 2022 +0800 Remove unused params in query result GET handler (#5346) commit c4bfd4f3e1328824d929d0631023054b44e28a54 Author: Jiajie Zhong <zhongjiajie955@hotmail.com> Date: Sun Jul 3 12:00:56 2022 +0800 mysql: add more configuration options (#5280) commit bdd1244604b17832cd50c19678dd0fba4e45a72e Author: Leandro Lorenzini <leandro@outlook.sg> Date: Sun Jul 3 03:02:49 2022 +0800 Fix: mongodb schema refresh failed when user had insufficient permissions (#5734) Co-authored-by: ban-lee-seng <banleesengpaints.marketing@gmail.com> commit 6806ebd244c64864e03147445694ad59934d5253 Author: Greg Stein <gstein@gmail.com> Date: Sat Jul 2 14:02:38 2022 -0400 Use correct names for Apache projects (#5776) Apache's trademark policy says to use the full name for these products on their first mention, on a page. commit b2cc42e383dda5f03a193ca64e91acadf75efebc Author: Jesse <jesse@whitehouse.dev> Date: Sat Jul 2 11:13:00 2022 -0500 Disable auto limit for mssql query runner (#5777) commit cabe33394bf4ea4155c6d45e779298e43a0d9e4a Author: Ian <68525743+decaffeinatedio@users.noreply.github.com> Date: Wed Jun 1 09:15:18 2022 -0700 [Fix] Broken image included in emails (#5719) commit 46ea3b1f0b263ba310de7c2c17e4a32d3ea4c343 Author: Gabriel A. Devenyi <gdevenyi@gmail.com> Date: Thu Apr 28 12:20:13 2022 -0400 Fix hard-coding of amd64 platform, make ARM build work. (#5687) * Fix hard-coding of amd64 platform and make amd64 package installation conditional * Cleanup Dockerfile for best practices * Enable BuildKit for docker building commit e6ebef1e5ab866ce1e706eaee6260edaffdc2bd7 Author: Jesse <jesse@whitehouse.dev> Date: Thu Mar 10 12:00:26 2022 -0600 Update contributor guidelines and clarify PR review process (#5714) commit b713f6b240970ed91fe1cfc7d6bf7eca69d9c918 Author: adamzwakk <adam@adamzwakk.com> Date: Wed Mar 2 10:34:52 2022 -0500 Update Dockerfile CHOWN into COPY (#5660) Its more efficient to chown while COPY for large stacks of files as per https://github.com/docker/for-linux/issues/388 commit 5de85543a57af75fecca43113f94bd456bad7f60 Author: Jesse <jesse.whitehouse@databricks.com> Date: Wed Feb 9 10:04:54 2022 -0600 List pages: move sidebar to the left (#5698) This change took place in steps: 1. Change order of content and sidebar. Sidebar appears first, then content. 2. Fix padding * Before: content was jutted against the sidebar. The sidebar was double- padded from the edge of the content area. After: Content has 15px pad against the sidebar. Sidebar has the same pad as the page title. 3. Don't pad the content on small screens. Otherwise the content appears off-center and doesn't use all of the available space. 4. Allow Create buttons to have varying width This makes the Query, Dashboard, and Alert list pages share the same style commit 175a4da49b61253f1c5a447bbd522fced1d82a1b Author: Bruno Agutoli <bruno@propelleraero.com.au> Date: Thu Feb 10 01:57:25 2022 +1100 Fix: Dashboard List page crashes when sorting by name (#5645) Closes #5119 commit 49fe29579a56e7a8e206895586eca1736a6d210d Author: Jesse <jesse.whitehouse@databricks.com> Date: Wed Feb 2 14:03:02 2022 -0600 Move user profile image url into the users.details field (#5697) Makes the details field a JSONB field per pg doc recommendations. Update model.all() method to work properly now that profile_image_url is not an independent field. Closes #4469 commit 4164a42aabd8ba410839b7380e635e72f58297cd Author: Steven Hao <stevenhao@users.noreply.github.com> Date: Wed Feb 2 08:13:40 2022 -0500 Multi-filters: show all results by default (#5676) commit 6797f32ea62da98742aa4b8f88e9d6aeff54a0b8 Author: Jesse <jesse.whitehouse@databricks.com> Date: Tue Feb 1 11:09:42 2022 -0600 Snowflake: add option to lowercase column names (#5657) Ported from app.redash.io codebase. * Add option to lowercase column names * Black the file commit ea07e7e19b62051e20f07726231d4ad3b08ab43e Author: JyothiGandi <JyothiGandi@users.noreply.github.com> Date: Tue Feb 1 21:18:07 2022 +0530 Fix: Test Connection button disabled after save (#5666) Closes #5455 commit 26ac8ab1cd56f550bef400d2db6e58f87ed2ec45 Author: anshulhiran <89910231+anshulhiran@users.noreply.github.com> Date: Tue Feb 1 20:12:39 2022 +0530 Firebolt Query Runner: now uses firebold-sdk python package (#5689) * Added firebolt-sdk in place of firebolt-sqlalchemy * fixed connection issue * fixed connection issue * final commit * Moved firebolt-sdk's imports to try block Co-authored-by: rajeshSigmoid <rajeshk@sigmoidanalytics.com> commit 12c475068483ba1cc2525e73ecd20843bf435922 Author: Jesse <jesse.whitehouse@databricks.com> Date: Fri Jan 28 08:52:31 2022 -0600 Fix: don't accept password login requests if password auth is disabled (#5693) commit 2b5d1c03c1d1b6aca502f43efcb1b03b46a958db Author: Jesse <jesse.whitehouse@databricks.com> Date: Fri Jan 21 15:43:42 2022 -0600 JSON query runner: optionally skip certificate verification (#5690) Add verify option to json datasource runner to allow query developers the option of skipping certificate verification Co-authored-by: Kevin Chiang <kchiang@tesla.com> Co-authored-by: kevinchiang <kevinchiang@outlook.com> commit f77f1b5ca155313d148edcfdbacddeeb5a0c7574 Author: Tin C <tim5go@gmail.com> Date: Fri Jan 21 02:03:04 2022 +0800 Fix: auto limit breaks for Oracle queries (#5181) Moves auto limit primitives to the base SQL query runner commit e28e4227bf11b0688dc9646579647455fade419f Author: Vladislav Denisov <denisov@sports.ru> Date: Wed Jan 19 22:53:27 2022 +0300 Python query runner: add function that transforms pandas dataframe to result format (#5629) commit 4fddff104a050a5fe3511d9c9d863aec08bae8df Author: be30c9 <92396435+be30c9@users.noreply.github.com> Date: Wed Jan 19 10:36:49 2022 -0800 SAML auth: allow custom service provider settings from environment variable (#5621) commit 8ef9a1d3986ec90f89f8f9d859a11a943636cf97 Author: Steven Hao <stevenhao@users.noreply.github.com> Date: Wed Jan 19 10:17:27 2022 -0800 Fix: make plotly charts have unbounded hoverlabel name length (#5661) commit 965db26cabfc0de83f65c91439092ed94db4de4a Author: Robin Zheng <zhengr@msn.com> Date: Thu Dec 16 16:50:13 2021 +0800 Fix"Unable to locate package msodbcsql17"on M1 (#5638) If you run the docker-compose on a Mac with the new M1 chip, you will get the "Unable to locate package msodbcsql17" error. Because there are currently no msodbcsql17 packages for arm64 architecture. The solution was to change the base image in the Dockerfile to change the installation to the older AMD architecture. FROM --platform=linux/amd64 python:3.7-slim-buster commit 64586500a7c550fda1c2c3324741f72e97239c86 Author: Katsuya Shimabukuro <katsuya-shimabukuro@freee.co.jp> Date: Wed Dec 15 13:05:52 2021 +0900 Improve BigQuery schema fetching when environment contains 50+ datasets (#5667) commit df472eb1d444e4e8389d2bf1d7251a5f1db6d3ae Author: Jesse <jesse.whitehouse@databricks.com> Date: Fri Nov 26 18:15:10 2021 -0600 Update CircleCI configs and move advocate to main requirements file (#5658) Ported from the 10.0.x branch commit 7487550ad76de5b92f04ddc263f614ab6ad78705 Author: Jesse <jesse.whitehouse@databricks.com> Date: Tue Nov 23 17:24:31 2021 -0600 Update changelog to incorporate security fixes and #5632 & #5606 (#5654) * Update changelog to incorporate security fixes and #5632 & #5606 * Added reference to sqlite fix commit 61bbb5aa7a23a93f2f93710005f71bc972826099 Author: Jesse <jesse.whitehouse@databricks.com> Date: Tue Nov 23 16:58:20 2021 -0600 Merge pull request from GHSA-fcpv-hgq6-87h7 commit ce60d20c4e3d1537581f2f70f1308fe77ab6a214 Author: Jesse <jesse.whitehouse@databricks.com> Date: Tue Nov 23 16:57:24 2021 -0600 Merge pull request from GHSA-g8xr-f424-h2rv commit da696ff7f84787cbf85967460fac52886cbe063e Author: Jesse <jesse.whitehouse@databricks.com> Date: Tue Nov 23 16:22:02 2021 -0600 Merge pull request from GHSA-vhc7-w7r8-8m34 * WIP: break the flask_oauthlib behavior * Refactor google-oauth to use cryptographic state. * Clean up comments * Fix: tests didn't pass because of the scope issues. Moved outside the create_blueprint method because this does not depend on the Authlib object. * Apply Arik's fixes. Tests pass. commit ed654a7b78dd791779ba61e884100af4d76e1c97 Author: Katsuya Shimabukuro <katsu.generation.888@gmail.com> Date: Fri Nov 19 00:00:48 2021 +0900 Speed up BigQuery schema fetching (#5632) New method improves schema fetching by as much as 98% on larger schemas commit 3d032b69e59bc449e4f6da43b380f329072cc897 Author: rajeshmauryasde <rajeshk@sigmoidanalytics.com> Date: Wed Nov 17 20:28:57 2021 +0530 Update Readme to reflect Firebolt data source (#5649) commit 86514207a38cbb1e96570568770a58416644c372 Author: Dan Goldin <dangoldin@gmail.com> Date: Mon Nov 15 16:43:51 2021 -0500 Fix TypeScript warning: integet -> integer typo (#5637) commit 2e67227f1bb6068c3f23bc044ad76ef7d4bccdc7 Author: Dan Goldin <dangoldin@gmail.com> Date: Thu Oct 28 15:55:48 2021 -0400 Typo(#5636) commit 86b2c4d06e38dd7457b530bd78a73eccb161a711 Author: Jesse <jesse.whitehouse@databricks.com> Date: Thu Oct 21 15:27:55 2021 -0500 Bump master to 11.0.0-dev (#5631) commit 3c248acf21e5808511da642553e9a3d442482703 Author: Jesse <jesse.whitehouse@databricks.com> Date: Thu Oct 21 11:25:30 2021 -0500 Fix: pagination is broken on the dashboard list page (#5612) * Fix: pagination is broken on the dashboard list page (#5516) * Add test that reproduces issue #5466 * Fix: Duplicate dashboard rows were returned by Dashboard.all() (#5466) * Update changelog for V10 * Update changelog for #5516 commit 39ca71c35606862a8fc0a9d8906e83dc5a360d89 Author: Aratrik Pal <44343120+AP2008@users.noreply.github.com> Date: Mon Oct 18 22:56:10 2021 +0530 Fixes issue #5622 (#5623) commit 143d22db04a9058966b8c7d678b06f228b937326 Author: rajeshSigmoid <89909168+rajeshSigmoid@users.noreply.github.com> Date: Thu Oct 14 23:27:12 2021 +0530 Add support for Firebolt Database (#5606) commit 7cac149cef70263b328049cb376c7f25f7b03efb Author: zoomdot <gninggoon@gmail.com> Date: Sat Oct 2 06:22:44 2021 +0900 Fix: Specify the protobuf version (#5608) protobuf package with a dependency of google-api-python-client released a new version (3.18.0) on September 16, 2021. Since then, the Docker build is failing, and it is presumed that there is a conflict with other DataSource packages that use protobuf. (phoenixdb, pydgraph) commit a0a28b09b4064894c63560dad9ab7f841fbfbd4d Author: Tucker Leavitt <tucker.leavitt@gmail.com> Date: Fri Sep 24 13:12:04 2021 -0600 Guard against empty totalProcessedBytes in BigQuery responses (#5592) * Guard against empty totalProcessedBytes in BigQuery responses This field will be empty on query responses for tables with row level access controls enabled. * Fix whitespace * Update redash/query_runner/big_query.py Co-authored-by: Jesse <jwhitehouse@airpost.net> commit e9bcc3c9243efbe1af922f918b5367fba9860172 Author: Jesse <jesse.whitehouse@databricks.com> Date: Mon Aug 30 02:43:00 2021 -0500 Fix: Edit Source button disappeared for users without CanEdit perms (#5568) commit 380345bb08a044b24a1725392ea6c1eb53678a7d Author: Levko Kravets <levko.ne@gmail.com> Date: Wed Aug 18 21:04:46 2021 +0300 Pin python3 image version (#5570) commit 0f41f2572060600301a31ac3654dff09395f5ab4 Author: Kyunghwan Ko <64265107+kyunghwan1207@users.noreply.github.com> Date: Wed Aug 11 01:31:26 2021 +0900 Fix: log message for bad auth token was malformed (#5557) commit 7445080d1a26b7dd359b8d592f831ab9afa07663 Author: Levko Kravets <levko.ne@gmail.com> Date: Mon Aug 2 13:16:33 2021 +0300 Use Yarn instead of NPM (#5541) commit b9cb8191f524e9fb12907f96e8eb67ba420d43a2 Author: deecay <deecay@users.noreply.github.com> Date: Wed Jul 28 05:27:09 2021 +0900 Excel & CSV query runner (#2478) * Excel query runner * Param handling for read_excel * CSV query runner * Fix wrong module name * Use yaml as query language * Use yaml as query language for CSV * Added icon and required modules * Local address filtering * Fix syntax error commit ff7c5e83673d04a726309cb1873cce75fc54e67b Author: Omer Lachish <289488+rauchy@users.noreply.github.com> Date: Tue Jun 15 17:41:36 2021 +0300 remove redundant fields from slack alert destination (#5514) commit 041b184d37caaa5d40e8ecd47fab6b9e45a25e1d Author: Shen Li <shenli3514@gmail.com> Date: Fri May 14 21:52:29 2021 +0800 README.md: Add TiDB to the Supported Data Sources (#5477) commit 5085495dd4564058b35e2a424dc62dd9dabe02d6 Author: Omer Lachish <289488+rauchy@users.noreply.github.com> Date: Fri May 14 16:48:10 2021 +0300 Refine Dockerfile caching (#5484) commit e62de4e4c32b1e8647a9c2201a2ad282638508ce Author: case-k-git <40357957+case-k-git@users.noreply.github.com> Date: Fri May 14 22:47:38 2021 +0900 fix big_query.py google api import error (#5482) commit 8cac6b555cbad967f345cc2ae3f3b6d8ee50000c Author: Jawshua <Jawshua@users.noreply.github.com> Date: Fri May 14 13:45:43 2021 +0000 Use the correct rq connection in `get_queues_status` (#5491) commit e4e567bbb945939687b3f94ba89daee2daf8d1ed Author: adamzwakk <shamist@gmail.com> Date: Fri May 14 09:25:52 2021 -0400 Fixing failure report rendering (#5492) commit 8e728308ab34c38f563b64ae4ba807d8e8d9fe07 Author: Ben Herzberg <69909379+BenSatori@users.noreply.github.com> Date: Fri May 14 16:07:30 2021 +0300 SFS-001: Adding support for the optional host connection property (#5490) commit 7ec86cf4bd37152bde73f99e8f63d22932a5b70e Author: Omer Lachish <omer@rauchy.net> Date: Mon May 10 21:36:34 2021 +0300 Expire sessions after 6 hours of inactivity (#5159) Configurable with environment variables commit 1c3f724f3ef97559a5d5f443093bb9516dd6fc8b Author: Omer Lachish <omer@rauchy.net> Date: Thu May 6 02:56:34 2021 +0300 use ptpython instead of standard python shell (#5483) commit 9c8c1bfa9ade90eb147bfcda75e5f9e95b691e42 Author: Jesse <jesse.whitehouse@databricks.com> Date: Mon Apr 26 12:02:47 2021 -0500 Adds rate limit to /forgot. (#5425) Security vulnerability was disclosed by Sohail Ahmed <https://www.linkedin.com/in/sohail-ahmed-755776184/> commit f21f7e211ff5fe12c850a9627cfadb80a5a8819e Author: iwakiriK <balssearch0113@gmail.com> Date: Thu Apr 22 05:01:57 2021 +0900 Athena: skip tables with no StorageDescriptor (#5447) commit a70eeb95305b038d4d96c9ae1664faf1afc20357 Author: Nolan Nichols <nnichols@mazetx.com> Date: Mon Apr 19 14:45:52 2021 -0700 Query Runner: SPARQL Endpoint Data Source (#5469) commit 427c005c044666c2bf1d04598e877b9a07ac3c6c Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Mon Apr 19 09:30:46 2021 -0300 Replace hardcoded ids with hook (#5444) * refactor: replace hardcoded ids with hook * refactor: replace hard coded ids with lodash id (class) commit d8d7c78992e44a4b6d7fdd4c39ccc1c35cd8c7a9 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Sat Apr 10 16:43:58 2021 -0300 Replace `<a>` and `<button>` with `<PlainButton>` (#5433) * Add PlainButton * refactor close icons * reorder import * refactor remaining anchors * refactor: replace remaining <button> and TODOs * refactor: changed applicable elements to type link * fix: minor details * bug: fix tooltip ternary * refactor: improve interactivity and semantics of schema list item commit 23ced5db5023a5063f4a2d4c9844b4397515c7a3 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Sat Apr 10 13:00:15 2021 -0300 fix: treat possibly empty hrefs (#5468) commit f018c0a7b72a3727e1b01d5aa2ab99b731124b96 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Fri Apr 9 15:34:42 2021 -0300 fix: rollback pip version to avoid legacy resolver problem (#5467) Co-authored-by: Lingkai Kong <lingkai.kong@databricks.com> commit 67263e1b0fbc3f625e9ef9aacc13464edb1bd720 Author: Jesse <jesse.whitehouse@databricks.com> Date: Thu Apr 8 13:32:34 2021 -0500 Fixes issue #5445: Scheduled query not working (#5448) * use 'query_id' everywhere instead of 'Query ID' * some black while we're at it Co-authored-by: Omer Lachish <omer@rauchy.net> commit bb1f8cbcf5d2d64676be5e1d35256f460da36c0f Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Wed Apr 7 09:50:54 2021 -0300 Fix Ace editor keyboard trap (#5451) * bug: fix a11y and add sr notification * refactor: improvements to sr notification commit a61a25dd3224c7ed97da711fe42667f0647d3f20 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Wed Mar 31 16:44:19 2021 -0300 Run prettier (#5436) * run in /client * run in /viz-lib * bug: fix wrong line ts expect error * bug: fixed search pattern for prettier commit 21ea72fdc553acdf81d006182ba162a7987eae26 Author: Jesse <jesse.whitehouse@databricks.com> Date: Wed Mar 31 08:18:59 2021 -0500 Get the user's current groups from props instead of useEffect(). (#5450) useEffect() doesn't run until _after_ the component renders. Before the hook runs, the value of `groups` === []. And this is passed to <DynamicForm>'s `initialValue` prop. The `initialValue` is not re-evaluated after useEffect() completes. So the users groups are never updated. This change pulls the user's current groups from `user` prop on the page. commit fa8b24ea016ec2e394589375c8a26349b5299146 Author: Gabriel Dutra <nesk.frz@gmail.com> Date: Tue Mar 30 16:06:35 2021 -0300 Prepare viz-lib release with Antd v4 (#5443) commit a2c96c1e6ddb372eb3bf996b77e222c8024c4601 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Fri Mar 26 15:24:07 2021 -0300 Embed "external" link type into `<Link>` component (#5432) * feature: add external link * refactor: split external link into own component * refactor: added link with icon * refactor: remove reduntant tab index * refactor: simplify props * refactor: fix types * refactor: bring types and components together * refactor: improve treatment of target commit 44178d99089059542860344de80ce519c5b62aeb Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Fri Mar 26 11:45:24 2021 -0300 Improve input fields a11y (#5427) * Added labels to params * Added aria-label to inputs * Linked unsemantic label with input * Replaced span with label * refactor: improve labels for schema browsers * refactor: component accepts aria label * refactor: add labels to sidebar search inputs commit 6228f4cf714c03e672c45d5f311b0faa0fdbf452 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Thu Mar 25 17:47:49 2021 -0300 Add live regions to tooltip (#5440) * feature: add live regions to tooltip * bug: treat null case commit c8df7a1c8a97a5c733e13e7d2fda306a0bc27749 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Wed Mar 24 18:50:21 2021 -0300 Add jsx/a11y eslint plugin (#5439) * build: install eslint jsx/a11y * chore: add ESlint rules for jsx/a11y * bug: add exceptions commit a665253f507fda5bd21cad15cf0267dbad4078cb Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Wed Mar 24 18:35:21 2021 -0300 Adds configuration for `<Tooltip>` trigger on focus (#5434) * refactor: add tooltip * refactor: replace imports * feature: add focus trigger commit 70681294a3363508be7bf8e65cea2e5b60751c5b Author: Sebastian Tramp <mail@sebastian.tramp.name> Date: Wed Mar 24 08:15:24 2021 +0100 Query Runner: eccenca Corporate Memory (SPARQL) - query RDF / Linked Data Knowledge Graphs with redash (#5415) * add Corporate Memory Runner based on cmempy 21.2.3 * fix code style * apply some code nice ups * use extendedEnum, boolean and extra_options for schema description * use lower case sorting for data source types list This correctly orders data source names which starts with lower chars (such as eccenca Corporate Memory) * add missing dblogo commit fb90b501cb8cd83b405a3650a3fa99a43e6ef421 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Mon Mar 22 19:49:36 2021 -0300 Improve icon a11y (#5424) * Added screen reader CSS * Added description to external links * Added spinner icon accessibility * Added accessibility to exclamation and big message * Added question and exclamation accessibility * Hide decorative icons * Standardized link design * Added a11y to refresh icons * Added aria-label to anchors and buttons * Added a11y to conditional icons * Added applicable labels to Ant Icons * Changed escape to interpolation * Replaced external links with opens in new tab * Improved Tooltip hosts * Added aria live to temporary elements * Removed mistakenly added redundant helper * Undoes unnecessarily added interpolation * Replaced empty label with hidden * Improved full icon label * Improved display of live regions * Added note * remove unused class * Created unique id * Remove TODOs * Proper action label * Improved feedback for autocomplete toggle * feature: add id hook * refactor: use id hook * standardize white space commit 0560e2410e52c7ad00df11723912d616861c76d0 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Wed Mar 17 14:26:08 2021 -0300 Improve css and add focus styles (#5420) * Add styles for focused ant menus * Add disabled styles to clickable button * Improved dashboard header syntax and added focus * Improved CSS syntax * Add interactive styles * Improved anchor dependent styles * Improved styles of widget (gray more/delete btns) * Add interactive style for favorite star * Improved style of delete btn * Make table content fill all space * Added focus and active styles * Scoped query snippets list * Fixed behavior for all major browsers * Replaced button styles with plain button * Scoped items list styles * Added focus styles to ant table * Add plain button (#5419) * Minor syntax improvements * Refactor of Link component (#5418) commit a5ec506b6073c96ec9ee59a9c4dea0f38d0c754a Author: Đặng Minh Dũng <dungdm93@live.com> Date: Sat Mar 13 03:10:06 2021 +0700 feat: support Trino data-source (#5411) * feat: add trino logo * feat: add trino commit d4f363854d4b3a027839cb8b05ebda77aae9e9eb Author: Jiajie Zhong <zhongjiajie955@hotmail.com> Date: Sat Mar 13 04:06:41 2021 +0800 Add setting to identify email block domain (#5377) * Add setting to identify email block domain ref: #5368 * rename Co-authored-by: Levko Kravets <levko.ne@gmail.com> * rename and add comment Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Update redash/handlers/users.py Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Update redash/handlers/users.py Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Add more comment to settting Co-authored-by: Levko Kravets <levko.ne@gmail.com> commit 9fdf1f341d02d903f045ea65d130a3cc93884299 Author: Omer Lachish <omer@rauchy.net> Date: Fri Mar 12 22:02:29 2021 +0200 Reset failure counter on adhoc success (#5394) * reset failure counter when query completes successfully via adhoc * Use "query_id" in metadata, but still allow "Query ID" for transition/legacy support commit 10bce2d1ac54499ff8e51d4f0de8b0a57651da45 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Thu Mar 11 11:07:01 2021 -0300 Refactor of Link component (#5418) * Refactor of link component * Applied anchor-is-valid to Link component * Fixed Eslint error * Removed improper anchor uses * Fixed TS errors commit b2636deef4bce34ddd1ee1a160299fe91613e26f Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Wed Mar 10 13:42:51 2021 -0300 Add plain button (#5419) * Add plain button * Minor syntax improvements commit 6cc69ec2c1ed634f7a0ba9cd17ead7c50dc48066 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Thu Mar 4 16:30:31 2021 -0300 Initial a11y improvements (#5408) * Fixed jsx-a11y problems * Changed tabIndex to type number * Initial improvements to DesktopNavbar accessibility * Added accessibility to favorites list * Improved accessibility in Desktop Navbar * Improvements in Desktop navbar semantics * Added aria roles to tags list * Fixed tabindex type * Improved aria labels in query control dropdown * Added tab for help trigger close button * Fixed typo * Improved accessibility in query selector * Changed resizable role to separator * Added label to empty state close button * Removed redundant and mistaken roles * Used semantic components * Removed tabIndex from anchor tags * Removed mistakenly set menuitem role from anchors * Removed tabIndex from Link components * Removed improper hidden aria label from icon * Reverted button and link roles in anchors for minimal merge conflicts * Replaced alt attr with aria-label for icons * Removed redundant menu role * Improved accessibility of CodeBlock * Removed improper role from schema browser * Reverted favorites list to div * Removed improper presentation role in query snippets * Tracked changes for further PR * Revert "Improved accessibility of CodeBlock" * Add aria-labelledby to the associated code labels This reverts commit 00a1685b1b37ad1ad5770880f9653dbd06d2cf3f. * Wrapped close icon into button commit 46e97a08cc90c4c8e4e35ae21fe9bf5eb17a00d2 Author: Omer Lachish <omer@rauchy.net> Date: Mon Feb 15 22:52:53 2021 +0200 Upgrade RQ to v1.5 (#5207) * upgrade RQ to v1.5 * set job's started_at * update healthcheck to match string worker names * delay worker healthcheck for 5 minutes from start to allow enough time to load in case many workers try to load simultaneously * log when worker cannot be found commit 640fea5e47b818b8cc11d0c6d6ad88e7c33e41a7 Author: Levko Kravets <levko.ne@gmail.com> Date: Sun Feb 14 22:16:06 2021 +0200 Fix duplicate stylesheets (#5396) commit c865293aaae014e06ae02482931522c6d55910fd Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Tue Feb 2 17:59:53 2021 -0300 Revert "Updated axios (#5371)" (#5385) This reverts commit 49536de1ed8331928cb6139d5aac2a2ebe780fc7. commit 3d3f6b19163b1c2df1a49d80d1c8d85e07293925 Author: Omer Lachish <omer@rauchy.net> Date: Tue Feb 2 16:30:38 2021 +0200 extend sync_user_details expiry (#5330) commit 0e1587a0687838b934c90c2b066ae0aa7db0af83 Author: Justin Talbot <76974990+justint-db@users.noreply.github.com> Date: Tue Feb 2 02:37:48 2021 -0800 Add My Dashboards filter option to the Dashboards list (#5375) * Add My Dashboards filter option to the Dashboards list. Added API endpoint to get the list of a user's dashboards, similar to the My Queries feature. * Update empty dashboard list state to show an invite to create a new dashboard, like My Queries * Update to Levko's suggested approach. Clean up some of the formatting for consistency. Put the 'My Queries/Dashboards' item before the Favorites since that organization seems cleaner to me. * Address Levko's comments commit 04edf16ed42cdf9d005e7a512162cee7ca298c9c Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Thu Jan 28 15:02:36 2021 -0300 Increased waiting time to avoid flakiness (#5370) commit 49536de1ed8331928cb6139d5aac2a2ebe780fc7 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Thu Jan 28 14:48:36 2021 -0300 Updated axios (#5371) commit 2f1394a6f4eb7bdf257210a7d47614527124fb73 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon Jan 25 21:49:32 2021 -0300 Bump axios from 0.19.0 to 0.21.1 (#5366) Bumps [axios](https://github.com/axios/axios) from 0.19.0 to 0.21.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.0...v0.21.1) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit 911f39800632c3de4e4d339006f7e0c8e186742e Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon Jan 25 16:52:14 2021 -0300 Bump bl from 1.2.2 to 1.2.3 in /viz-lib (#5257) Bumps [bl](https://github.com/rvagg/bl) from 1.2.2 to 1.2.3. - [Release notes](https://github.com/rvagg/bl/releases) - [Commits](https://github.com/rvagg/bl/compare/v1.2.2...v1.2.3) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit b0b1d6c81c8dd324a96db35dd592277a7a327db9 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon Jan 25 13:44:11 2021 -0300 Bump dompurify from 2.0.8 to 2.0.17 in /viz-lib (#5326) Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.0.8 to 2.0.17. - [Release notes](https://github.com/cure53/DOMPurify/releases) - [Commits](https://github.com/cure53/DOMPurify/compare/2.0.8...2.0.17) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit 23a279f318b40b9535a91e080fb864c96a7729a8 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Fri Jan 22 21:03:15 2021 -0300 Fix for Cypress flakiness generated by param_spec (#5349) commit e71ccf5de559b6e5342e1ca1d09a509d61ea2f0f Author: Arik Fraimovich <arik@arikfr.com> Date: Thu Jan 21 10:55:52 2021 -0800 Fix: add a merge migration to solve multi head issue (#5364) * Add unit test to test for multi-head migrations issue * Add merge migration commit bb42e92cd05c328fc216e878981427fc269ec15c Author: Jiajie Zhong <zhongjiajie955@hotmail.com> Date: Thu Jan 21 11:45:16 2021 +0800 Remove unnecessary space in rq log (#5345) commit 4ec96caac5d1b4726aadc3d7aeba2aa2ab16bb86 Author: Patrick Yang <patrick.yang@databricks.com> Date: Wed Jan 20 19:40:53 2021 -0800 Encrypt alert notification destinations (#5317) commit 829247c2d2c1a5ac35cee4c356cce8d718727d06 Author: Vipul Mathur <vipulmathur@users.noreply.github.com> Date: Thu Jan 21 01:47:39 2021 +0530 Use legacy resolver in pip to fix broken build (#5309) Fixes #5300 and fixes #5307 There have been upstream (`python:37-slim` image) changes that bring in `pip` version 20.3.1, which makes new `2020-resolver` the default. Due to that, un-resolvable dependency conflicts in `requirements_all_ds.txt` now cause the build to fail. This is a workaround until the package versions can be updated to work with the new pip resolver. commit 7d33af434320dc37e3587cb43f1ecf22188ffb4e Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Tue Jan 12 23:54:14 2021 -0300 Fix inconsistent Sankey behavior (#5286) * added type casting to coerce number string into nuber * Merge branch 'master' into fix-inconsistent=sankey-behavior * typed map viz options * Partially typed what was possible * reworked data coercion * improved MapOptionsType types * readaqueted sankey rows so as to allow strings again commit 84c2abed59bace2f2b9d1e31d512a60ba8c8ac47 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Mon Jan 11 15:18:50 2021 -0300 Add reorder to dashboard parameter widgets (#5267) * added paramOrder prop * minor refactor * moved logic to widget * Added paramOrder to widget API call * Update client/app/components/dashboards/dashboard-widget/VisualizationWidget.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Merge branch 'master' into reorder-dashboard-parameters * experimental removal of helper element * cleaner comment * Added dashboard global params logic * Added backend logic for dashboard options * Removed testing leftovers * removed appending sortable to parent component behavior * Revert "Added backend logic for dashboard options" This reverts commit 41ae2ce4755a6fa03fd76d900819b11016919275. * Re-structured backend options * removed temporary edits * Added dashboard/widget param reorder cypress tests * Separated edit and sorting permission * added options to public dashboard serializer * Removed undesirable events from drag * Bring back attaching sortable to its parent This reverts commit 163fb6fef5ecf7ec9924d5ff2dddcb4d889caab8. * Added prop to control draggable destination parent * Removed paramOrder fallback * WIP (for Netflify preview) * fixup! Added prop to control draggable destination parent * Better drag and drop styling and fix for the padding * Revert "WIP (for Netflify preview)" This reverts commit 433e11edc353b645410bac4bc162819ffd37d89a. * Improved dashboard parameter Cypress test * Standardized reorder styling * Changed dashboard param reorder to edit mode only * fixup! Improved dashboard parameter Cypress test * fixup! Improved dashboard parameter Cypress test * Fix for Cypress CI error Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> commit 8b068dfd0b7e03b467bf5c37177fe9c1cb23dae0 Author: Christopher Grant <christopher.grant@protonmail.com> Date: Fri Jan 8 13:20:11 2021 -0800 Truncate large Databricks ODBC result sizes (#5290) Truncates results sets that exceed a limit taken from an environment variable called DATABRICKS_ROW_LIMIT. commit 06eb8681206fcca4e0688d1f580caea9655ad70a Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Wed Jan 6 15:13:33 2021 -0300 Bar chart e2e test (#5279) * created bar-chart e2e test boilerplate * refactored assertions * added snapshots and dashboard * refactored assertions to properly deal with async * replaced loops with getters for proper workings of cypress * added a couple other bar charts * ran prettier * added a better query for bar charts * removed leftovers * moved helpers to support folder Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> commit 52ae7bedb28d6738f475496a5bd2c01d7a7dafa2 Author: Patrick Yang <patrick.yang@databricks.com> Date: Tue Jan 5 11:47:54 2021 -0800 Secret handling for Yandex, TreasureData, & Postgres/CockroachDB SSL (#5312) commit fbe57de53cff47d48c7cdb39ede380443e6f8a3d Author: Tim Gates <tim.gates@iress.com> Date: Tue Jan 5 21:43:14 2021 +1100 docs: fix simple typo, possbily -> possibly (#5329) There is a small typo in redash/settings/__init__.py. Should read `possibly` rather than `possbily`. commit db0cb98ed3b9ebf080e66ba209b49ae250f7ad86 Author: Patrick Yang <patrick.yang@databricks.com> Date: Mon Jan 4 23:14:16 2021 -0800 Add Username and Password fields to MongoDB config (#5314) commit dcdff66e6260517e954785bb34da47e565402f1a Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Thu Dec 17 21:56:46 2020 -0300 Dropdown param search fix (#5304) * fixed QueryBasedParamterInput optionFilterProp * added optionFilterProp fallback for SelectWithVirtualScroll * simplified syntax * removed optionFilterProp from QueryBasedParameterInput.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * restricted SelectWithVirtualScroll props * Added e2e test for parameter filters * moved filter assertion to more suitable place * created helper for option filter prop assertion * moved option filter prop assertion to proper place, added result update assertion * refactor openAndSearchAntdDropdown helper * Fix parameter_spec Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> commit d0793c4ba8b28fcd0c40dd91453f8b5e19f9eb2d Author: Patrick Yang <patrick.yang@databricks.com> Date: Wed Dec 16 15:39:30 2020 -0800 Obfuscate non-email alert destinations (#5318) commit 7b8bcdf3563a05db3850d8b9dd0a09d95d2ed5cf Author: Lingkai Kong <lingkai.kong@databricks.com> Date: Wed Dec 16 11:22:19 2020 -0800 change item element in system status page (#5323) commit c290864ccd9d038e0d4558ef4e0ba67f29baa3ed Author: Elad Ossadon <elad.ossadon@databricks.com> Date: Tue Dec 15 18:21:37 2020 -0800 Convert viz-lib to TypeScript (#5310) Co-authored-by: ts-migrate <> commit b70e95a3235090959138a21cda1d17415fd32152 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Mon Dec 14 10:09:43 2020 -0300 added eslint no-console (#5305) * added eslint no-console * Update client/.eslintrc.js to allow warnings Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> commit 18ee5343aa45440538029ae2a2311e9131ad006a Author: Elad Ossadon <elad.ossadon@databricks.com> Date: Thu Dec 10 11:16:31 2020 -0800 Sync date format from settings with clientConfig (#5299) commit fdf636a3935b0d42e87c5a3e0b543f748f871392 Author: Elad Ossadon <elad.ossadon@databricks.com> Date: Mon Dec 7 16:02:52 2020 -0800 Fix disabled hot reload flow (#5306) commit 88c13868a304c1615ea4deed21188527cac4bc27 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Mon Dec 7 17:21:40 2020 -0300 removed leftover console.log (#5303) commit aab11dc79b2c9bb04f49281732c212897e9caa3d Author: Elad Ossadon <elado7@gmail.com> Date: Mon Dec 7 11:46:46 2020 -0800 Add React Fast Refresh + Hot Module Reloading (#5291) commit 00c77cf36e4ff6667c3755c82c23114518458b75 Author: Elad Ossadon <elado7@gmail.com> Date: Sun Dec 6 12:09:19 2020 -0800 Redesign desktop nav bar (#5294) commit 6e2631dec2e7d848b3a0891d67ef5b96bb2401aa Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Mon Nov 30 18:48:35 2020 -0300 Changed 'Delete Alert' into 'Delete' for consistency (#5287) commit 4b8895934142895d63c2f9fb61ec9ce84f60aa02 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Tue Nov 24 11:42:20 2020 -0300 Fix QuerySourceDropdown value type (#5284) commit fa2b57a20928cd11eea889ac7fce9484d29ee964 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Sun Nov 22 13:07:56 2020 -0300 Remove unwanted props from Select component (#5277) * Explicitly selected props so as to avoid errors from non-wanted props * Simplified approach * Ran prettier 😬 * Fixed minor issues commit 132fed64b34e573e77998a294e0ac9ecba3ef153 Author: Jiajie Zhong <zhongjiajie955@hotmail.com> Date: Fri Nov 20 15:11:13 2020 -0600 Correct cleanup_query_results comment (#5276) Correct comment from QUERY_RESULTS_MAX_AGE to QUERY_RESULTS_CLEANUP_MAX_AGE commit fa7ecca485b0a69887509711c3997cde5a3fc955 Author: Gabriel Dutra <nesk.frz@gmail.com> Date: Tue Nov 10 09:59:15 2020 -0300 Frontend updates from internal fork (#5259) * DynamicComponent for QuerySourceAlerts * General Settings updates * Dynamic Date[Range] updates * EmptyState updates * Query and SchemaBrowser updates * Adjust page headers and add disablePublish * Policy updates * Separate Home FavoritesList component * Update FormatQuery * Autolimit frontend fixes * Misc updates * Keep registering of QuerySourceDropdown * Undo changes in DynamicComponent * Change sql-formatter package.json syntax * Allow opening help trigger in new tab * Don't run npm commands as root in Dockerfile * Cypress: Remove extra execute query commit 8f484706b16c8770ce157ab945c43317efb7471d Author: deecay <deecay@users.noreply.github.com> Date: Mon Nov 9 06:17:08 2020 +0900 Enable Boxplot to be horizontal (#5262) commit e2e871415572bda337459a99a4cfe7d5c99c9f25 Author: Josh Bohde <josh@joshbohde.com> Date: Thu Nov 5 03:49:45 2020 -0600 Enable graceful shutdown of rq workers (#5214) * Enable graceful shutdown of rq workers * Use `exec` in the `worker` command of the entrypoint to propagate the `TERM` signal * Allow rq processes managed by supervisor to exit without restart on expected status codes * Allow supervisorctl to contact the running supervisor * Add a `shutdown_worker` command that will send `TERM` to all running worker processes and then sleep. This allows orchestration systems to initiate a graceful shutdown before sending `SIGTERM` to supervisord * Use Heroku worker as the BaseWorker This implements a graceful shutdown on SIGTERM, which simplifies external shutdown procedures. * Fix imports based upon review * Remove supervisorctl config commit c6bf8a1c55bc73734dd8f8d8fab8972e33502b7a Author: Jerry <610819267@qq.com> Date: Thu Nov 5 02:56:41 2020 +0800 bugfix: fix #5254 (#5255) Co-authored-by: Jerry <jerry.yuan@webweye.com> commit 12f71925c26fa92c575472f804cfc85187ac0b6a Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Tue Nov 3 16:50:39 2020 -0300 Multiselect dropdown slowness (fix) (#5221) * created util to estimate reasonable width for dropdown * removed unused import * improved calculation of item percentile * added getItemOfPercentileLength to relevant spots * added getItemOfPercentileLength to relevant spots * Added missing import * created custom select element * added check for property path * removed uses of percentile util * gave up on getting element reference * finished testing Select component * removed unused imports * removed older uses of Option component * added canvas calculation * removed minWidth from Select * improved calculation * added fallbacks * added estimated offset * removed leftovers 😅 * replaced to percentiles to max value * switched to memo and renamed component * proper useMemo syntax * Update client/app/components/Select.tsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * created custom restrictive types * added quick const * fixed style * fixed generics * added pos absolute to fix percy * removed custom select from ParameterMappingInput * applied prettier * Revert "added pos absolute to fix percy" This reverts commit 4daf1d4bef9edf93cd9bb1f404bd022472ff17a2. * Pin Percy version to 0.24.3 * Update client/app/components/ParameterMappingInput.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * renamed Select.jsx to SelectWithVirtualScroll Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> commit cae088f35bcb308552650f7c5e8cc84cb00aa0e4 Author: Omer Lachish <omer@rauchy.net> Date: Mon Nov 2 22:36:57 2020 +0200 extend the refresh_queries timeout from 3 minutes to 10 minutes (#5253) commit a3c79f26b9914a40bdbf253f958254863ada6076 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Thu Oct 29 17:24:13 2020 -0300 Fix for the typo button in ParameterMappingInput (#5244) commit c7c92a319245b0e4ce60d97d7447d12c9592215b Author: Jonathan Hult <jonathan@jonathanhult.com> Date: Wed Oct 28 04:03:26 2020 -0400 Fix annotation bug causing queries not to run - ORA-00933 (#5179) commit 55cf17aa4721b67c7d6d408b90255091bdc4b57d Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Wed Oct 28 04:37:16 2020 -0300 added required to Form.Item and Input for better UI (#5231) * added required to Form.Item and Input for better UI * removed required from input * Revert "removed required from input" This reverts commit b56cd76fa1b1eba4e337e55c2797b6a5d64f2699. * Redo "removed required from input" * removed typo Co-authored-by: rafawendel2010@gmail.com <rafawendel> commit 8dd76a00c55a26d83bf794d8e4dc03a0ca2c009b Author: Levko Kravets <levko.ne@gmail.com> Date: Mon Oct 26 21:46:38 2020 +0200 Fix dashboard background grid (#5238) commit e242ac2b104109ac75870de237296851b6aafad6 Author: Christopher Grant <chrisgrant@lavabit.com> Date: Sun Oct 25 08:06:45 2020 -0700 Static SAML configuration and assertion encryption (#5175) * Change front-end and data model for SAML2 auth - static configuration * Add changes to use inline metadata. * add switch for static and dynamic SAML configurations * Fixed config of backend static/dynamic to match UI * add ability to encrypt/decrypt SAML assertions with pem and crt files. Upgraded to pysaml2 6.1.0 to mitigate signature mismatch during decryption * remove print debug statement * Use utility to find xmlsec binary for encryption, formatting saml_auth module * format SAML Javascript, revert want_signed_response to pre-PR value * pysaml2's entityid should point to the sp, not the idp * add logging for entityid for validation * use mustache_render instead of string formatting. put all static logic into static branch * move mustache template for inline saml metadata to the global level * Incorporate SAML type with Enabled setting * Update client/app/pages/settings/components/AuthSettings/SAMLSettings.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Chad Chen <chad.chen@databricks.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> commit 66463aedd44ea179b3b92e2baf51bb698c72f672 Author: Gabriel Dutra <nesk.frz@gmail.com> Date: Fri Oct 16 11:53:21 2020 -0300 Fix Home EmptyState help link (#5217) commit 8a6524c1bae3c94259a37194b0b86d42f51f7cd4 Author: Rafael Wendel <rafawendel2010@gmail.com> Date: Thu Oct 15 15:34:38 2020 -0300 Add horizontal bar chart (#5154) * added bar chart boilerplate * added x/y manipulation * replaced x/y management to inner series preparer * added tests * moved axis inversion to all charts series * removed line and area * inverted labels ui * removed normalizer check, simplified inverted axes check * finished working hbar * minor review * added conditional title to YAxis * generalized horizontal chart for line charts, resetted state on globalSeriesType change * fixed updates * fixed updates to layout * fixed minor issues * removed right Y axis when axes inverted * ran prettier * fixed updater function conflict and misuse of getOptions * renamed inverted to swapped * created mappingtypes for swapped columns * removed unused import * minor polishing * improved series behaviour in h-bar * minor fix * added basic filter to ChartTypeSelect * final setup of filtered chart types * Update viz-lib/src/components/visualizations/editor/createTabbedEditor.jsx * added proptypes and renamed ChartTypeSelect props * Add missing import * fixed import, moved result array to global scope * merged import * clearer naming in ChartTypeSelect * better lodash map syntax * fixed global modification * moved result inside useMemo Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Levko Kravets <levko.ne@gmail.com> commit 9097feb100b10e022df16e3c7dc3f490754a2f95 Author: Gabriel Dutra <nesk.frz@gmail.com> Date: Thu Oct 15 14:25:22 2020 -0300 Frontend updates from internal fork (#5209) commit db4e97fa6f8d4c3e4d0ca37d06b743a22079da8e Author: Gabriel Dutra <nesk.frz@gmail.com> Date: Fri Oct 9 12:23:14 2020 -0300 Remove build args from Cypress start script (#5203) commit 0d4615a482ea590f50e965d8825edb8f513311cb Author: Levko Kravets <levko.ne@gmail.com> Date: Fri Oct 9 12:12:56 2020 +0300 Extra actions on Queries and Dashboards pages (#5201) * Extra actions for Query View and Query Source pages * Convert Queries List page to functional component * Convert Dashboards List page to functional component * Extra actions for Query List page * Extra actions for Dashboard List page * Extra actions for Dashboard page * Pass some extra data to Dashboard.HeaderExtra component * CR1 commit ff008a076bfd46458a4a5368b1897eebb7805f06 Author: Alexander Rusanov <alexander.rusanov@gmail.com> Date: Tue Oct 6 21:06:47 2020 +0200 Updated Cypress to v5.3 and fixed e2e tests (#5199) * Upgraded Cypress to v5.3 and fixed e2e tests * Updated cypress image * Fixed failing tests * Updated NODE_VERSION in netlify * Update client/cypress/integration/visualizations/choropleth_spec.js Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * fixed test in choropleth Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> commit 8d548ecbac4dd36a07e760fbaddf1c59e3990a77 Author: Gabriel Dutra <nesk.frz@gmail.com> Date: Sun Oct 4 10:01:30 2020 -0300 Share Embed Spec: Make sure query is executed (#5191) commit 2992c382d12ba0ddb23dd1886b38c00c0d8b67cc Author: Gabriel Dutra <nesk.frz@gmail.com> Date: Fri Oct 2 23:54:05 2020 -0300 ScheduleDialog: Filter empty interval groups (#5196) commit f4dcb2918a78eb2752c3b67858283093f60d4773 Author: Gabriel Dutra <nesk.frz@gmail.com> Date: Tue Sep 29 03:51:28 2020 -0300 Move Cypress to dev dependencies (#3991) * Test Cypress on package list * Skip Puppeteer Chromium as well * Put back missing npm install on netlify.toml * Netlify: move env vars to build.environment * Remove cypress:install script * Update Cypress dockerfile * Copy package-lock.json to Cypress dockerfile commit c821cab4cb3fd933333c9ee0f6e24eb6771d490e Author: Gabriel Dutra <nesk.frz@gmail.com> Date: Mon Sep 28 21:43:04 2020 -0300 Generate Code Coverage report for Cypress (#5137) commit 4fb77867b0a2b6c653bb6f44e4ee3477d1876779 Author: Levko Kravets <levko.ne@gmail.com> Date: Mon Sep 28 13:12:40 2020 +0300 Align Y axes at zero (#5053) * Align Y axes as zero * Fix typo (with @deecay) * Add alignYAxesAtZero function * Avoid 0 division Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> commit a473611cb0a34e471f3fa09841c675930a205648 Author: Levko Kravets <levko.ne@gmail.com> Date: Thu Sep 24 14:39:09 2020 +0300 Some Choropleth improvements/refactoring (#5186) * Directly map query results column to GeoJSON property * Use cache for geoJson requests * Don't handle bounds changes while loading geoJson data * Choropleth: fix map "jumping" on load; don't save bounds if user didn't edit them; refine code a bit * Improve cache * Optimize Japan Perfectures map (remove irrelevant GeoJson properties) * Improve getOptions for Choropleth; remove unused code * Fix test * Add US states map * Convert USA map to Albers projection * Allow to specify user-friendly field names for maps commit 210008c714c8bbae28fcb73fbc2e95ec26363e0b Author: Levko Kravets <levko.ne@gmail.com> Date: Wed Sep 23 16:30:08 2020 +0300 Ask user to log in when session expires (#5178) * Ask user to log in when session expires * Update implementation * Update implementation * Minor fix * Update modal * Do not intercept calls to api/session as Auth.requireSession() relies on it * Refine code; adjust popup size and position commit aa5d4f5f4e63d116b55a230aac8ca9cf62706c70 Author: Omer Lachish <omer@rauchy.net> Date: Wed Sep 23 12:54:48 2020 +0300 add 'cancelled' meta directive to all cancelled jobs (#5187) commit 6b811c5245c0941779a12aac459fe599b45191ce Author: Omer Lachish <omer@rauchy.net> Date: Mon Sep 21 23:21:14 2020 +0300 Refresh CSRF tokens (#5177) * expire CSRF tokens after 6 hours * use axios' built-in cookie to header copy mechanism * add axios-auth-refresh * retry CSRF-related 400 errors by refreshing the cookie * export the auth refresh interceptor to support ejecting it if neccessary * reject the original request if it's unrelated to CSRF commit 83726da48a0d1768a8f726f007ce0c6fd594c2de Author: Levko Kravets <levko.ne@gmail.com> Date: Mon Sep 21 12:54:55 2020 +0300 Keep additional URL params when forking a query (#5184) commit 72dc157bbe9c6df4664716aabfaf007f6929fdf6 Author: Levko Kravets <levko.ne@gmail.com> Date: Thu Sep 17 14:01:15 2020 +0300 Allow to clear selected tags on list pages (#5142) * Convert TagsList to functional component * Convert TagsList to typescript * Allow to unselect all tags * Add title to Tags block and explicit "clear filter" button * Some tweaks commit 1b8ff8e810aaa81c8aa8f28aef9e1ca3632b8521 Author: Lingkai Kong <lingkai.kong@databricks.com> Date: Mon Sep 14 04:18:31 2020 -0700 Add default limit (1000) to SQL queries (#5088) * add default limit 1000 * Add frontend changes and connect to backend * Fix query hash because of default limit * fix CircleCI test * adjust for comment commit 31ddd0fb7999d427bcc8707e016038b90b63e032 Author: Omer Lachish <omer@rauchy.net> Date: Thu Sep 10 15:43:25 2020 +0300 prevent assigning queries to view_only data sources (#5152) commit 5cabf7a7245906a67dad6ae874f0c63aa5a20156 Author: Levko Kravets <levko.ne@gmail.com> Date: Thu Sep 10 13:42:53 2020 +0300 Keep selected filters when switching visualizations (#5146) * getredash/redash#4944 Query pages: keep selected filters when switching visualizations * Pass current filters to expanded widget modal commit 59b135ace7438220d6bc9b3a8b6c0b86b0447f5c Author: max-voronov <70445727+max-voronov@users.noreply.github.com> Date: Sat Sep 5 20:08:01 2020 +0300 Move CardsList to typescript (#5136) * Refactor CardsList - pass a suffix for list item Adding :id to an item to be used as a key suffix is redundant and the same can be accomplished by using :index from the map function. * Move CardsList to typescript * Convert CardsList component to functional component * CR1 * CR2 commit 32b41e41123a038e14078ed7ae081c4f3591b443 Author: Gabriel Dutra <nesk.frz@gmail.com> Date: Fri Sep 4 08:00:30 2020 -0300 Misc frontend changes from internal fork (#5143) commit 2e31b9105442c6d209e106d2388decd0a3945518 Author: Gabriel Dutra <nesk.frz@gmail.com> Date: Fri Sep 4 07:57:43 2020 -0300 Antd v4: Fix CreateUserDialog (#5139) * Antd v4: Update CreateUserDialog * Add Cypress test for user creation commit 205915e6db802d61667c14f8978d0c02fcccfe46 Author: Gabriel Dutra <nesk.frz@gmail.com> Date: Tue Sep 1 08:49:30 2020 -0300 Add toggle to disable public URLs (#5140) * Add toggle to disable public URLs * Add Cypress tests commit b7c245f925c4884fd5b4bca2ceafd4d32ba592f7 Author: Levko Kravets <levko.ne@gmail.com> Date: Sun Aug 30 15:54:16 2020 +0300 Support multiple queries in a single query box (#5058) * Support multiple queries in a single query box * Implement statement splitting function and add tests for it * Add a test for databricks-specific syntax * Split statements before running query commit 681b2f1abdc59e2fdbf11657dd3eff2b667c266b Author: Levko Kravets <levko.ne@gmail.com> Date: Sun Aug 30 15:33:38 2020 +0300 Introduce Link component (#5122) * Introduce Link component * Use Link component for external links as well * Remove unused file (I hope it's really not needed) * Use Link component in visualizations library * Simplify Link component implementation * CR1 * Trigger build * CR2 commit a31196aef8e3155229aa7430d43150350d2a38a7 Author: Gabriel Dutra <nesk.frz@gmail.com> Date: Tue Aug 25 14:24:15 2020 -0300 Upgrade Ant Design to v4 (#5068) commit 596e5bee3a0ad94ec9f2afe12ca750d408354dbf Author: Arik Fraimovich <arik@arikfr.com> Da…
* ErrorMessage is not centered (#4981) * ErrorMessage is not centered * Adjust ErrorMessage size on large screens Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Fix CLI command for "status" (#4989) * Fix CLI command for "status" CLI command "status" can fail due to incorrect connection information to RQ. This change matches the behavior from line 65 and solves the connection error. * Move connection up to CLI entrypoint * Some permissions fixes (#4994) * Don't show New ... buttons on list pages if user doesn't have corresponding permissions * Hide Create menu item if no create actions available * Catch QueryResultError on widget load (#4991) * Refactor Organization Settings and add extension points to it (#4995) * Split OrganizationSettings page into components * Update change handling: use objects instead of string keys, move some logic to more appropriate place * Convert OrganizationSettings page to functional component and refine code a bit * Add some extension points * Improve onChange handler Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Refactor User Profile page and add extension points to it (#4996) * Move components specific to UserProfile page to corresponding folder * Split UserProfile page into components * Rename components, refine code a bit * Add some extension points * Fix margin * Allow unregistering settings tabs (#5000) * Dynamically register frontend routes (#4998) * Allow to override frontend routes * Configure app before initializing ApplicationArea * Refine code * Avoid purging operational queues (#4973) * avoid purging operational queues * schema queues actually run queries, so they should be purged * Fix org option in users create_root cli command (#5003) Thanks @nason 👍 * Remove pace-progress (#4990) * Delete locks for cancelled queries (#5006) * delete locks for cancelled queries * test that query cancellations do not prevent reenqueues * Too large visualization cause filters block to collapse (#5007) * Textbox: confirm close if text was changed (#5009) * Textbox: confirm close if text was changed * Update texting (with @gabrieldutra) * Update texting Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Allow private addresses when enforcing is disabled (#4983) * Custom primary/foreign key types (#5008) * allow overriding the type of key used for primary/foreign keys of the different models * rename key_types to singular key_type * add some documentation for `database_key_definitions` * Add "Last 12 months" option to dynamic date ranges (#5004) * Fixed broken custom JS visualization settings (#5013) * Python query runner fix (#4966) * fixed print method * fixed `.items()` error * added extra builtins * added guarded_unpack_sequence * add a couple of missed custom key types hooks (#5014) * Databricks custom Schema Browser (#5010) * Allow GET from non-admins on data source resource (#4992) * Handle React exception when a function is provided (#5016) * Add plus between tags to clarify how they are used #4628 (#5017) Co-authored-by: Levko Kravets <kravets-levko@users.noreply.github.com> Co-authored-by: Levko Kravets <kravets-levko@users.noreply.github.com> * Y-axis autoscale fails when min or max is set (#4904) * getredash/redash#4784 Y-axis autoscale fails when min or max is set * Update tests Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Fix Databricks Schema Browser scrollbar (#5023) * Refactor: extract commonly used pattern into hook (#5022) * Explicitly sort routes to reduce a chance of conflicts (#5020) * Explicitly sort routes to reduce (avoid at all?) a chance of conflicts * Sort routes by params count * Fix: sorting queries by schedule was resulting in a wrong order (#4954) * fix schedule sorting issue * style change * Update to meet code style. * move the schedule sort to backend * mod comment Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Query Source: Add Shift+Enter shortcut for query execution (#5037) * Fix schema browser items height (#5024) * Dynamic Form: Make default extra fields state a prop (#5039) * purge_failed_jobs can take up to several minutes, so better have a proper timeout (#5033) * Visualizations Library: Enhance docs (#4946) * Allow to change order of legend items (#5021) * Allow to change order of legend items * Update tests * Update Ace Editor version (#5041) * getredash/redash#5031 Counter is too large on Query View/Source pages (#5044) * Databricks Schema Browser: Allow eventlet worker instead of RQ (#5045) * Add loading button in UI * Handle databricks schema requests without RQ * Don't use gevent worker * Revert "Don't use gevent worker" This reverts commit 9704c70a941a68c249db73e0450961e608fc0507. * Use eventlet * Use first column instead of 'namespace' one * Revert "Add loading button in UI" This reverts commit c0e4dfb966714a9f9e23977ab659e64afb5ce255. * Remove databricks tasks * Update eventlet * Add libevent * Display logs on failure * Revert "Add libevent" This reverts commit a00d067cb77b6f4f9919cf47f1d15c34d107a18c. * Test updating gunicorn * Don't set eventlet as the default for Redash Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Remove fetchDataFromJob usage Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Dashboard URL does not show new name when dashboard name is updated (#1009) * on dashboard api calls - take the id from the beginning of the slug, unless there is no number in it - in that case, take the entire slug as id * add dashboard id when showing links to dashboards * change path to include new name when renaming dashboards * move slug generation to backend * redirect to new name after changing (this time with a proper promise) * oh right, we already have a slug function * add spec that makes sure that renamed dashboards are redirected to the url which contains their new name * use id-slug in all Cypress specs * move dashboards from /dashboard/:slug to /dashboards/:id-:name_as_slug * Update dashboard url as its name changes * Update separator to be "/" * Update missing dashboard urls * Update api not to depend on int id * Use '-' instead of '/' as separator and update Dashboard.get calls * slug -> name_as_slug * Keep slug urls on cypress * Update route path * Use legacy attr for GET * Use getter for urlForDashboard * Update dashboard url when loaded by slug * Update Dashboard routes to use id instead of slug * Update Dashboard handler tests * Update Cypress tests * Fix create new dashboard spec * Use axios { params } * Drop Ternary operator * Send updated slug directly in 'slug' attr * Update multiple urls Dashboard test name * Update route names Co-authored-by: Levko Kravets <levko.ne@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Fix bundle-extensions script to work on recent importlib-resources. (#5050) Also adds a test case for running the script. * Add TypeScript support (#5027) * TASK Add typescript dependencies to package.json * TASK Add typescript to build process and npm scripts and TASK Move example components to typescript and add an example definition file. * TASK Move back to ts-loader instead of babel typescript preset * FIX Remove unnecessary changes * FIX Explicitly mention tsconfig file in webpack.config.js to avoid `error while parsing tsconfig.json, The 'files' list in config file 'tsconfig.json' is empty` See (https://github.com/TypeStrong/ts-loader/issues/405#issuecomment-330108362) * FIX Move tsconfig to client subdirectory to make it accessible in docker container (only webpack.config.js is copied over from root folder in Dockerfile) * TASK Move from ts-loader to babel to reduce compatibility issues between ES6/7 and typescript compilation. * TASK Add types for classnames, hoist-non-react-statics and lodash. Fix default export of DashboardList and run prettier on eslintrc * Run npm install * Trigger tests * Run npm install 2 * Trigger tests * Eager load outdated queries (#5049) * eager load outdated queries * explicitly use .all() instead of list() * Bump lodash from 4.17.15 to 4.17.19 in /viz-lib (#5051) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix wrong Y-axis range for stacked bar chart (#5029) * getredash/redash#5026 Fix wrong Y-axis range for stacked bar chart * Update tests * Use Plotly's built-in algorinthm to compute Y-axis range * Update tests * Revert previous solution (yRange-related code) * Revert other unrelated changes * Revert other unrelated changes * Move chart rendering to own file and ensure that rendering steps will occur in necessary order * Reduce amount of plot updates by mergin separate updates into a sigle cumulative update * Give better names for several functions * Load extensions on db init (#5062) * Only try to create tables and stamp DB if not tables exist already. * load extensions when creating the database * Add Column Type to Databricks schema browser (#5052) * Add Column Type to Databricks schema browser * Map schema columns to be an object * Format pg with Black * Add data_type for Postgres * Add override mechanism for webpack config (#5057) * loosen up some proptypes and backend casting to allow different primary key types (#5066) * Move page size select to the Paginator component (#5064) * Queries list: move "My Queries" above "Archived" (#5072) * Introduce caching to the Databricks Schema Browser (#5038) * Add refresh button in the bottom * Add caching * Drop allSettled * Simplify refresh button * Update error to return 500 * Load tables before loading columns * Don't mutate schema * Reset db name and schemas when changing data source * Load both tables and columns * Return error with code 200 * Code review updates * Add expiration time to the cache Keys * Back with RQ * Make sure Policy is loaded for user session (#5081) * Exposing setting for overriding template directory (#4324) When using some of the customized login flows such as `REMOTE_USER` the deployed site breaks due to not finding template files. This change updated the app default to use the existing Flask templates directory rather than the compiled static assets directory which only contains an index.html file. * fix: Compose version due to --build-arg (#5083) Signed-off-by: koooge <koooooge@gmail.com> * Add: periodic job to remove ghost locks. (#5087) * Bar chart with second y axis overlaps data series (#4150) * Add support for CSRF tokens (#5055) * add flask-wtf * add CSRF tokens to all static forms * add CSRF tokens to all axios requests * disable CSRF validation in unit tests * support CSRF-protected requests in *most* cypress tests * don't enfroce CSRF checks by default * avoid CSRF enforcement in unit tests * remove redundant spread * some camel casing hiccups * always yield the CSRF cookie, but avoid enforcing it if CSRF toggle is off * Restyled by prettier (#5056) Co-authored-by: Restyled.io <commits@restyled.io> * set a CSRF header only if cookie is present * enforce CSRF in CI * install lodash directly for Cypress * install request-cookies directly for Cypress. We should probably start loading package.json deps * enable CSRF support when logout and login happen within the same spec Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io <commits@restyled.io> * Make table visualization header fixed (#5103) * add lock table header * Move styling to a new class * Update renderer.less * Move class to table and fix top border * Update renderer.less * Update viz-lib/src/visualizations/table/renderer.less Thanks, this change is good to me. Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * CSRF Exempts (#5108) * if present, always convert CSRF cookies to headers * exempt auth blueprints from CSRF protection * respect CSRF exempts * Update Organization Settings (#5114) * Update Organization Settings * Cypress: Update tab naming * Make DataSourceListComponent a dynamic component (#5113) * Use Skeleton as ItemsList loading state (#5079) * Cypress touch-ups (#5109) * allow non-sequential IDs for DataSources in Cypress tests * refactor redash-api to a set of Cypress commands * support mounting Redash endpoints in Cypress routes * fix some parameter specs by waiting for schema to load * extract baseUrl from cypress.json * Restyled by prettier (#5110) Co-authored-by: Restyled.io <commits@restyled.io> Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io <commits@restyled.io> * Remove content width limit on all pages (#5091) * Remove content width limit on all pages * Update client/app/assets/less/inc/base.less Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Remove content limit; limit sidebar width Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Keep widget loading when fetch request is replaced (#5118) * Fix create link on data sources page (#5121) * Fix create link on data sources page * Cypress: Add test that the source dialog opens * Add DynamicComponent to PermissionsControl flag (#5116) * Misc changes to codebase back ported from internal fork (#5129) * Set corejs version in .babelrc so Jest doesn't complain. * Rewrite services/routes in TypeScript. * Add TypeScript definitions for DialogComponent. * Make image paths more portable * Add current route context and hook. * Make EmptyState more flexible by being able to pass in getSteps function. * Rewrite ItemsList in TypeScript. * Introduce the possibility to add custom sorters for a column. * Rearrange props to be friendly to TypeScript. * Type definitions for NotificationApi. * Use Databricks query editor components for databricks_internal type of query runner. * URL Escape password in Alembic configuration. * Compare types in migrations. * Misc changes to codebase back ported from internal fork - part 2 (#5130) * Auth: make login url configurable. * More portable image url. * durationHumanize: support for milliseconds. * Sorter: support for custom sort. * Upgrade Ant Design to v4 (#5068) * Introduce Link component (#5122) * Introduce Link component * Use Link component for external links as well * Remove unused file (I hope it's really not needed) * Use Link component in visualizations library * Simplify Link component implementation * CR1 * Trigger build * CR2 * Support multiple queries in a single query box (#5058) * Support multiple queries in a single query box * Implement statement splitting function and add tests for it * Add a test for databricks-specific syntax * Split statements before running query * Add toggle to disable public URLs (#5140) * Add toggle to disable public URLs * Add Cypress tests * Antd v4: Fix CreateUserDialog (#5139) * Antd v4: Update CreateUserDialog * Add Cypress test for user creation * Misc frontend changes from internal fork (#5143) * Move CardsList to typescript (#5136) * Refactor CardsList - pass a suffix for list item Adding :id to an item to be used as a key suffix is redundant and the same can be accomplished by using :index from the map function. * Move CardsList to typescript * Convert CardsList component to functional component * CR1 * CR2 * Keep selected filters when switching visualizations (#5146) * getredash/redash#4944 Query pages: keep selected filters when switching visualizations * Pass current filters to expanded widget modal * prevent assigning queries to view_only data sources (#5152) * Add default limit (1000) to SQL queries (#5088) * add default limit 1000 * Add frontend changes and connect to backend * Fix query hash because of default limit * fix CircleCI test * adjust for comment * Allow to clear selected tags on list pages (#5142) * Convert TagsList to functional component * Convert TagsList to typescript * Allow to unselect all tags * Add title to Tags block and explicit "clear filter" button * Some tweaks * Keep additional URL params when forking a query (#5184) * Refresh CSRF tokens (#5177) * expire CSRF tokens after 6 hours * use axios' built-in cookie to header copy mechanism * add axios-auth-refresh * retry CSRF-related 400 errors by refreshing the cookie * export the auth refresh interceptor to support ejecting it if neccessary * reject the original request if it's unrelated to CSRF * add 'cancelled' meta directive to all cancelled jobs (#5187) * Ask user to log in when session expires (#5178) * Ask user to log in when session expires * Update implementation * Update implementation * Minor fix * Update modal * Do not intercept calls to api/session as Auth.requireSession() relies on it * Refine code; adjust popup size and position * Some Choropleth improvements/refactoring (#5186) * Directly map query results column to GeoJSON property * Use cache for geoJson requests * Don't handle bounds changes while loading geoJson data * Choropleth: fix map "jumping" on load; don't save bounds if user didn't edit them; refine code a bit * Improve cache * Optimize Japan Perfectures map (remove irrelevant GeoJson properties) * Improve getOptions for Choropleth; remove unused code * Fix test * Add US states map * Convert USA map to Albers projection * Allow to specify user-friendly field names for maps * Align Y axes at zero (#5053) * Align Y axes as zero * Fix typo (with @deecay) * Add alignYAxesAtZero function * Avoid 0 division Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Generate Code Coverage report for Cypress (#5137) * Move Cypress to dev dependencies (#3991) * Test Cypress on package list * Skip Puppeteer Chromium as well * Put back missing npm install on netlify.toml * Netlify: move env vars to build.environment * Remove cypress:install script * Update Cypress dockerfile * Copy package-lock.json to Cypress dockerfile * ScheduleDialog: Filter empty interval groups (#5196) * Share Embed Spec: Make sure query is executed (#5191) * Updated Cypress to v5.3 and fixed e2e tests (#5199) * Upgraded Cypress to v5.3 and fixed e2e tests * Updated cypress image * Fixed failing tests * Updated NODE_VERSION in netlify * Update client/cypress/integration/visualizations/choropleth_spec.js Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * fixed test in choropleth Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Extra actions on Queries and Dashboards pages (#5201) * Extra actions for Query View and Query Source pages * Convert Queries List page to functional component * Convert Dashboards List page to functional component * Extra actions for Query List page * Extra actions for Dashboard List page * Extra actions for Dashboard page * Pass some extra data to Dashboard.HeaderExtra component * CR1 * Remove build args from Cypress start script (#5203) * Frontend updates from internal fork (#5209) * Add horizontal bar chart (#5154) * added bar chart boilerplate * added x/y manipulation * replaced x/y management to inner series preparer * added tests * moved axis inversion to all charts series * removed line and area * inverted labels ui * removed normalizer check, simplified inverted axes check * finished working hbar * minor review * added conditional title to YAxis * generalized horizontal chart for line charts, resetted state on globalSeriesType change * fixed updates * fixed updates to layout * fixed minor issues * removed right Y axis when axes inverted * ran prettier * fixed updater function conflict and misuse of getOptions * renamed inverted to swapped * created mappingtypes for swapped columns * removed unused import * minor polishing * improved series behaviour in h-bar * minor fix * added basic filter to ChartTypeSelect * final setup of filtered chart types * Update viz-lib/src/components/visualizations/editor/createTabbedEditor.jsx * added proptypes and renamed ChartTypeSelect props * Add missing import * fixed import, moved result array to global scope * merged import * clearer naming in ChartTypeSelect * better lodash map syntax * fixed global modification * moved result inside useMemo Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Fix Home EmptyState help link (#5217) * Static SAML configuration and assertion encryption (#5175) * Change front-end and data model for SAML2 auth - static configuration * Add changes to use inline metadata. * add switch for static and dynamic SAML configurations * Fixed config of backend static/dynamic to match UI * add ability to encrypt/decrypt SAML assertions with pem and crt files. Upgraded to pysaml2 6.1.0 to mitigate signature mismatch during decryption * remove print debug statement * Use utility to find xmlsec binary for encryption, formatting saml_auth module * format SAML Javascript, revert want_signed_response to pre-PR value * pysaml2's entityid should point to the sp, not the idp * add logging for entityid for validation * use mustache_render instead of string formatting. put all static logic into static branch * move mustache template for inline saml metadata to the global level * Incorporate SAML type with Enabled setting * Update client/app/pages/settings/components/AuthSettings/SAMLSettings.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Chad Chen <chad.chen@databricks.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Fix dashboard background grid (#5238) * added required to Form.Item and Input for better UI (#5231) * added required to Form.Item and Input for better UI * removed required from input * Revert "removed required from input" This reverts commit b56cd76fa1b1eba4e337e55c2797b6a5d64f2699. * Redo "removed required from input" * removed typo Co-authored-by: rafawendel2010@gmail.com <rafawendel> * Fix annotation bug causing queries not to run - ORA-00933 (#5179) * Fix for the typo button in ParameterMappingInput (#5244) * extend the refresh_queries timeout from 3 minutes to 10 minutes (#5253) * Multiselect dropdown slowness (fix) (#5221) * created util to estimate reasonable width for dropdown * removed unused import * improved calculation of item percentile * added getItemOfPercentileLength to relevant spots * added getItemOfPercentileLength to relevant spots * Added missing import * created custom select element * added check for property path * removed uses of percentile util * gave up on getting element reference * finished testing Select component * removed unused imports * removed older uses of Option component * added canvas calculation * removed minWidth from Select * improved calculation * added fallbacks * added estimated offset * removed leftovers 😅 * replaced to percentiles to max value * switched to memo and renamed component * proper useMemo syntax * Update client/app/components/Select.tsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * created custom restrictive types * added quick const * fixed style * fixed generics * added pos absolute to fix percy * removed custom select from ParameterMappingInput * applied prettier * Revert "added pos absolute to fix percy" This reverts commit 4daf1d4bef9edf93cd9bb1f404bd022472ff17a2. * Pin Percy version to 0.24.3 * Update client/app/components/ParameterMappingInput.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * renamed Select.jsx to SelectWithVirtualScroll Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * bugfix: fix #5254 (#5255) Co-authored-by: Jerry <jerry.yuan@webweye.com> * Enable graceful shutdown of rq workers (#5214) * Enable graceful shutdown of rq workers * Use `exec` in the `worker` command of the entrypoint to propagate the `TERM` signal * Allow rq processes managed by supervisor to exit without restart on expected status codes * Allow supervisorctl to contact the running supervisor * Add a `shutdown_worker` command that will send `TERM` to all running worker processes and then sleep. This allows orchestration systems to initiate a graceful shutdown before sending `SIGTERM` to supervisord * Use Heroku worker as the BaseWorker This implements a graceful shutdown on SIGTERM, which simplifies external shutdown procedures. * Fix imports based upon review * Remove supervisorctl config * Enable Boxplot to be horizontal (#5262) * Frontend updates from internal fork (#5259) * DynamicComponent for QuerySourceAlerts * General Settings updates * Dynamic Date[Range] updates * EmptyState updates * Query and SchemaBrowser updates * Adjust page headers and add disablePublish * Policy updates * Separate Home FavoritesList component * Update FormatQuery * Autolimit frontend fixes * Misc updates * Keep registering of QuerySourceDropdown * Undo changes in DynamicComponent * Change sql-formatter package.json syntax * Allow opening help trigger in new tab * Don't run npm commands as root in Dockerfile * Cypress: Remove extra execute query * Correct cleanup_query_results comment (#5276) Correct comment from QUERY_RESULTS_MAX_AGE to QUERY_RESULTS_CLEANUP_MAX_AGE * Remove unwanted props from Select component (#5277) * Explicitly selected props so as to avoid errors from non-wanted props * Simplified approach * Ran prettier 😬 * Fixed minor issues * Fix QuerySourceDropdown value type (#5284) * Changed 'Delete Alert' into 'Delete' for consistency (#5287) * Redesign desktop nav bar (#5294) * Add React Fast Refresh + Hot Module Reloading (#5291) * removed leftover console.log (#5303) * Fix disabled hot reload flow (#5306) * Sync date format from settings with clientConfig (#5299) * added eslint no-console (#5305) * added eslint no-console * Update client/.eslintrc.js to allow warnings Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Convert viz-lib to TypeScript (#5310) Co-authored-by: ts-migrate <> * change item element in system status page (#5323) * Obfuscate non-email alert destinations (#5318) * Dropdown param search fix (#5304) * fixed QueryBasedParamterInput optionFilterProp * added optionFilterProp fallback for SelectWithVirtualScroll * simplified syntax * removed optionFilterProp from QueryBasedParameterInput.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * restricted SelectWithVirtualScroll props * Added e2e test for parameter filters * moved filter assertion to more suitable place * created helper for option filter prop assertion * moved option filter prop assertion to proper place, added result update assertion * refactor openAndSearchAntdDropdown helper * Fix parameter_spec Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Add Username and Password fields to MongoDB config (#5314) * docs: fix simple typo, possbily -> possibly (#5329) There is a small typo in redash/settings/__init__.py. Should read `possibly` rather than `possbily`. * Secret handling for Yandex, TreasureData, & Postgres/CockroachDB SSL (#5312) * Bar chart e2e test (#5279) * created bar-chart e2e test boilerplate * refactored assertions * added snapshots and dashboard * refactored assertions to properly deal with async * replaced loops with getters for proper workings of cypress * added a couple other bar charts * ran prettier * added a better query for bar charts * removed leftovers * moved helpers to support folder Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Truncate large Databricks ODBC result sizes (#5290) Truncates results sets that exceed a limit taken from an environment variable called DATABRICKS_ROW_LIMIT. * Add reorder to dashboard parameter widgets (#5267) * added paramOrder prop * minor refactor * moved logic to widget * Added paramOrder to widget API call * Update client/app/components/dashboards/dashboard-widget/VisualizationWidget.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Merge branch 'master' into reorder-dashboard-parameters * experimental removal of helper element * cleaner comment * Added dashboard global params logic * Added backend logic for dashboard options * Removed testing leftovers * removed appending sortable to parent component behavior * Revert "Added backend logic for dashboard options" This reverts commit 41ae2ce4755a6fa03fd76d900819b11016919275. * Re-structured backend options * removed temporary edits * Added dashboard/widget param reorder cypress tests * Separated edit and sorting permission * added options to public dashboard serializer * Removed undesirable events from drag * Bring back attaching sortable to its parent This reverts commit 163fb6fef5ecf7ec9924d5ff2dddcb4d889caab8. * Added prop to control draggable destination parent * Removed paramOrder fallback * WIP (for Netflify preview) * fixup! Added prop to control draggable destination parent * Better drag and drop styling and fix for the padding * Revert "WIP (for Netflify preview)" This reverts commit 433e11edc353b645410bac4bc162819ffd37d89a. * Improved dashboard parameter Cypress test * Standardized reorder styling * Changed dashboard param reorder to edit mode only * fixup! Improved dashboard parameter Cypress test * fixup! Improved dashboard parameter Cypress test * Fix for Cypress CI error Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Fix inconsistent Sankey behavior (#5286) * added type casting to coerce number string into nuber * Merge branch 'master' into fix-inconsistent=sankey-behavior * typed map viz options * Partially typed what was possible * reworked data coercion * improved MapOptionsType types * readaqueted sankey rows so as to allow strings again * Use legacy resolver in pip to fix broken build (#5309) Fixes #5300 and fixes #5307 There have been upstream (`python:37-slim` image) changes that bring in `pip` version 20.3.1, which makes new `2020-resolver` the default. Due to that, un-resolvable dependency conflicts in `requirements_all_ds.txt` now cause the build to fail. This is a workaround until the package versions can be updated to work with the new pip resolver. * Encrypt alert notification destinations (#5317) * Remove unnecessary space in rq log (#5345) * Fix: add a merge migration to solve multi head issue (#5364) * Add unit test to test for multi-head migrations issue * Add merge migration * Fix for Cypress flakiness generated by param_spec (#5349) * Bump dompurify from 2.0.8 to 2.0.17 in /viz-lib (#5326) Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.0.8 to 2.0.17. - [Release notes](https://github.com/cure53/DOMPurify/releases) - [Commits](https://github.com/cure53/DOMPurify/compare/2.0.8...2.0.17) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump bl from 1.2.2 to 1.2.3 in /viz-lib (#5257) Bumps [bl](https://github.com/rvagg/bl) from 1.2.2 to 1.2.3. - [Release notes](https://github.com/rvagg/bl/releases) - [Commits](https://github.com/rvagg/bl/compare/v1.2.2...v1.2.3) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump axios from 0.19.0 to 0.21.1 (#5366) Bumps [axios](https://github.com/axios/axios) from 0.19.0 to 0.21.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.0...v0.21.1) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Updated axios (#5371) * Increased waiting time to avoid flakiness (#5370) * Add My Dashboards filter option to the Dashboards list (#5375) * Add My Dashboards filter option to the Dashboards list. Added API endpoint to get the list of a user's dashboards, similar to the My Queries feature. * Update empty dashboard list state to show an invite to create a new dashboard, like My Queries * Update to Levko's suggested approach. Clean up some of the formatting for consistency. Put the 'My Queries/Dashboards' item before the Favorites since that organization seems cleaner to me. * Address Levko's comments * extend sync_user_details expiry (#5330) * Revert "Updated axios (#5371)" (#5385) This reverts commit 49536de1ed8331928cb6139d5aac2a2ebe780fc7. * Fix duplicate stylesheets (#5396) * Upgrade RQ to v1.5 (#5207) * upgrade RQ to v1.5 * set job's started_at * update healthcheck to match string worker names * delay worker healthcheck for 5 minutes from start to allow enough time to load in case many workers try to load simultaneously * log when worker cannot be found * Initial a11y improvements (#5408) * Fixed jsx-a11y problems * Changed tabIndex to type number * Initial improvements to DesktopNavbar accessibility * Added accessibility to favorites list * Improved accessibility in Desktop Navbar * Improvements in Desktop navbar semantics * Added aria roles to tags list * Fixed tabindex type * Improved aria labels in query control dropdown * Added tab for help trigger close button * Fixed typo * Improved accessibility in query selector * Changed resizable role to separator * Added label to empty state close button * Removed redundant and mistaken roles * Used semantic components * Removed tabIndex from anchor tags * Removed mistakenly set menuitem role from anchors * Removed tabIndex from Link components * Removed improper hidden aria label from icon * Reverted button and link roles in anchors for minimal merge conflicts * Replaced alt attr with aria-label for icons * Removed redundant menu role * Improved accessibility of CodeBlock * Removed improper role from schema browser * Reverted favorites list to div * Removed improper presentation role in query snippets * Tracked changes for further PR * Revert "Improved accessibility of CodeBlock" * Add aria-labelledby to the associated code labels This reverts commit 00a1685b1b37ad1ad5770880f9653dbd06d2cf3f. * Wrapped close icon into button * Add plain button (#5419) * Add plain button * Minor syntax improvements * Refactor of Link component (#5418) * Refactor of link component * Applied anchor-is-valid to Link component * Fixed Eslint error * Removed improper anchor uses * Fixed TS errors * Reset failure counter on adhoc success (#5394) * reset failure counter when query completes successfully via adhoc * Use "query_id" in metadata, but still allow "Query ID" for transition/legacy support * Add setting to identify email block domain (#5377) * Add setting to identify email block domain ref: #5368 * rename Co-authored-by: Levko Kravets <levko.ne@gmail.com> * rename and add comment Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Update redash/handlers/users.py Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Update redash/handlers/users.py Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Add more comment to settting Co-authored-by: Levko Kravets <levko.ne@gmail.com> * feat: support Trino data-source (#5411) * feat: add trino logo * feat: add trino * Improve css and add focus styles (#5420) * Add styles for focused ant menus * Add disabled styles to clickable button * Improved dashboard header syntax and added focus * Improved CSS syntax * Add interactive styles * Improved anchor dependent styles * Improved styles of widget (gray more/delete btns) * Add interactive style for favorite star * Improved style of delete btn * Make table content fill all space * Added focus and active styles * Scoped query snippets list * Fixed behavior for all major browsers * Replaced button styles with plain button * Scoped items list styles * Added focus styles to ant table * Add plain button (#5419) * Minor syntax improvements * Refactor of Link component (#5418) * Improve icon a11y (#5424) * Added screen reader CSS * Added description to external links * Added spinner icon accessibility * Added accessibility to exclamation and big message * Added question and exclamation accessibility * Hide decorative icons * Standardized link design * Added a11y to refresh icons * Added aria-label to anchors and buttons * Added a11y to conditional icons * Added applicable labels to Ant Icons * Changed escape to interpolation * Replaced external links with opens in new tab * Improved Tooltip hosts * Added aria live to temporary elements * Removed mistakenly added redundant helper * Undoes unnecessarily added interpolation * Replaced empty label with hidden * Improved full icon label * Improved display of live regions * Added note * remove unused class * Created unique id * Remove TODOs * Proper action label * Improved feedback for autocomplete toggle * feature: add id hook * refactor: use id hook * standardize white space * Query Runner: eccenca Corporate Memory (SPARQL) - query RDF / Linked Data Knowledge Graphs with redash (#5415) * add Corporate Memory Runner based on cmempy 21.2.3 * fix code style * apply some code nice ups * use extendedEnum, boolean and extra_options for schema description * use lower case sorting for data source types list This correctly orders data source names which starts with lower chars (such as eccenca Corporate Memory) * add missing dblogo * Adds configuration for `<Tooltip>` trigger on focus (#5434) * refactor: add tooltip * refactor: replace imports * feature: add focus trigger * Add jsx/a11y eslint plugin (#5439) * build: install eslint jsx/a11y * chore: add ESlint rules for jsx/a11y * bug: add exceptions * Add live regions to tooltip (#5440) * feature: add live regions to tooltip * bug: treat null case * Improve input fields a11y (#5427) * Added labels to params * Added aria-label to inputs * Linked unsemantic label with input * Replaced span with label * refactor: improve labels for schema browsers * refactor: component accepts aria label * refactor: add labels to sidebar search inputs * Embed "external" link type into `<Link>` component (#5432) * feature: add external link * refactor: split external link into own component * refactor: added link with icon * refactor: remove reduntant tab index * refactor: simplify props * refactor: fix types * refactor: bring types and components together * refactor: improve treatment of target * Prepare viz-lib release with Antd v4 (#5443) * Get the user's current groups from props instead of useEffect(). (#5450) useEffect() doesn't run until _after_ the component renders. Before the hook runs, the value of `groups` === []. And this is passed to <DynamicForm>'s `initialValue` prop. The `initialValue` is not re-evaluated after useEffect() completes. So the users groups are never updated. This change pulls the user's current groups from `user` prop on the page. * Run prettier (#5436) * run in /client * run in /viz-lib * bug: fix wrong line ts expect error * bug: fixed search pattern for prettier * Fix Ace editor keyboard trap (#5451) * bug: fix a11y and add sr notification * refactor: improvements to sr notification * Fixes issue #5445: Scheduled query not working (#5448) * use 'query_id' everywhere instead of 'Query ID' * some black while we're at it Co-authored-by: Omer Lachish <omer@rauchy.net> * fix: rollback pip version to avoid legacy resolver problem (#5467) Co-authored-by: Lingkai Kong <lingkai.kong@databricks.com> * fix: treat possibly empty hrefs (#5468) * Replace `<a>` and `<button>` with `<PlainButton>` (#5433) * Add PlainButton * refactor close icons * reorder import * refactor remaining anchors * refactor: replace remaining <button> and TODOs * refactor: changed applicable elements to type link * fix: minor details * bug: fix tooltip ternary * refactor: improve interactivity and semantics of schema list item * Replace hardcoded ids with hook (#5444) * refactor: replace hardcoded ids with hook * refactor: replace hard coded ids with lodash id (class) * Query Runner: SPARQL Endpoint Data Source (#5469) * Athena: skip tables with no StorageDescriptor (#5447) * Adds rate limit to /forgot. (#5425) Security vulnerability was disclosed by Sohail Ahmed <https://www.linkedin.com/in/sohail-ahmed-755776184/> * use ptpython instead of standard python shell (#5483) * Expire sessions after 6 hours of inactivity (#5159) Configurable with environment variables * SFS-001: Adding support for the optional host connection property (#5490) * Fixing failure report rendering (#5492) * Use the correct rq connection in `get_queues_status` (#5491) * fix big_query.py google api import error (#5482) * Refine Dockerfile caching (#5484) * README.md: Add TiDB to the Supported Data Sources (#5477) * remove redundant fields from slack alert destination (#5514) * Excel & CSV query runner (#2478) * Excel query runner * Param handling for read_excel * CSV query runner * Fix wrong module name * Use yaml as query language * Use yaml as query language for CSV * Added icon and required modules * Local address filtering * Fix syntax error * Use Yarn instead of NPM (#5541) * Fix: log message for bad auth token was malformed (#5557) * Pin python3 image version (#5570) * Fix: Edit Source button disappeared for users without CanEdit perms (#5568) * Guard against empty totalProcessedBytes in BigQuery responses (#5592) * Guard against empty totalProcessedBytes in BigQuery responses This field will be empty on query responses for tables with row level access controls enabled. * Fix whitespace * Update redash/query_runner/big_query.py Co-authored-by: Jesse <jwhitehouse@airpost.net> * Fix: Specify the protobuf version (#5608) protobuf package with a dependency of google-api-python-client released a new version (3.18.0) on September 16, 2021. Since then, the Docker build is failing, and it is presumed that there is a conflict with other DataSource packages that use protobuf. (phoenixdb, pydgraph) * Add support for Firebolt Database (#5606) * Fixes issue #5622 (#5623) * Fix: pagination is broken on the dashboard list page (#5612) * Fix: pagination is broken on the dashboard list page (#5516) * Add test that reproduces issue #5466 * Fix: Duplicate dashboard rows were returned by Dashboard.all() (#5466) * Update changelog for V10 * Update changelog for #5516 * Bump master to 11.0.0-dev (#5631) * Typo(#5636) * Fix TypeScript warning: integet -> integer typo (#5637) * Update Readme to reflect Firebolt data source (#5649) * Speed up BigQuery schema fetching (#5632) New method improves schema fetching by as much as 98% on larger schemas * Merge pull request from GHSA-vhc7-w7r8-8m34 * WIP: break the flask_oauthlib behavior * Refactor google-oauth to use cryptographic state. * Clean up comments * Fix: tests didn't pass because of the scope issues. Moved outside the create_blueprint method because this does not depend on the Authlib object. * Apply Arik's fixes. Tests pass. * Merge pull request from GHSA-g8xr-f424-h2rv * Merge pull request from GHSA-fcpv-hgq6-87h7 * Update changelog to incorporate security fixes and #5632 & #5606 (#5654) * Update changelog to incorporate security fixes and #5632 & #5606 * Added reference to sqlite fix * Update CircleCI configs and move advocate to main requirements file (#5658) Ported from the 10.0.x branch * Improve BigQuery schema fetching when environment contains 50+ datasets (#5667) * Fix"Unable to locate package msodbcsql17"on M1 (#5638) If you run the docker-compose on a Mac with the new M1 chip, you will get the "Unable to locate package msodbcsql17" error. Because there are currently no msodbcsql17 packages for arm64 architecture. The solution was to change the base image in the Dockerfile to change the installation to the older AMD architecture. FROM --platform=linux/amd64 python:3.7-slim-buster * Fix: make plotly charts have unbounded hoverlabel name length (#5661) * SAML auth: allow custom service provider settings from environment variable (#5621) * Python query runner: add function that transforms pandas dataframe to result format (#5629) * Fix: auto limit breaks for Oracle queries (#5181) Moves auto limit primitives to the base SQL query runner * JSON query runner: optionally skip certificate verification (#5690) Add verify option to json datasource runner to allow query developers the option of skipping certificate verification Co-authored-by: Kevin Chiang <kchiang@tesla.com> Co-authored-by: kevinchiang <kevinchiang@outlook.com> * Fix: don't accept password login requests if password auth is disabled (#5693) * Firebolt Query Runner: now uses firebold-sdk python package (#5689) * Added firebolt-sdk in place of firebolt-sqlalchemy * fixed connection issue * fixed connection issue * final commit * Moved firebolt-sdk's imports to try block Co-authored-by: rajeshSigmoid <rajeshk@sigmoidanalytics.com> * Fix: Test Connection button disabled after save (#5666) Closes #5455 * Snowflake: add option to lowercase column names (#5657) Ported from app.redash.io codebase. * Add option to lowercase column names * Black the file * Multi-filters: show all results by default (#5676) * Move user profile image url into the users.details field (#5697) Makes the details field a JSONB field per pg doc recommendations. Update model.all() method to work properly now that profile_image_url is not an independent field. Closes #4469 * Fix: Dashboard List page crashes when sorting by name (#5645) Closes #5119 * List pages: move sidebar to the left (#5698) This change took place in steps: 1. Change order of content and sidebar. Sidebar appears first, then content. 2. Fix padding * Before: content was jutted against the sidebar. The sidebar was double- padded from the edge of the content area. After: Content has 15px pad against the sidebar. Sidebar has the same pad as the page title. 3. Don't pad the content on small screens. Otherwise the content appears off-center and doesn't use all of the available space. 4. Allow Create buttons to have varying width This makes the Query, Dashboard, and Alert list pages share the same style * Update Dockerfile CHOWN into COPY (#5660) Its more efficient to chown while COPY for large stacks of files as per https://github.com/docker/for-linux/issues/388 * Update contributor guidelines and clarify PR review process (#5714) * Fix hard-coding of amd64 platform, make ARM build work. (#5687) * Fix hard-coding of amd64 platform and make amd64 package installation conditional * Cleanup Dockerfile for best practices * Enable BuildKit for docker building * [Fix] Broken image included in emails (#5719) * Disable auto limit for mssql query runner (#5777) * Use correct names for Apache projects (#5776) Apache's trademark policy says to use the full name for these products on their first mention, on a page. * Fix: mongodb schema refresh failed when user had insufficient permissions (#5734) Co-authored-by: ban-lee-seng <banleesengpaints.marketing@gmail.com> * mysql: add more configuration options (#5280) * Remove unused params in query result GET handler (#5346) * Added clear button for query-based parameter inputs (#5710) * Add unarchive button to dashboard (#4697) Co-authored-by: Jesse Whitehouse <jesse@whitehouse.dev> * New Query Runner: Arango query runner (#5124) Co-authored-by: Hugo Gresse <hugo.gresse@gmail.com> * Sort Python safe built-ins (#5781) Co-authored-by: Jiajie Zhong <zhongjiajie955@hotmail.com> Co-authored-by: Jiajie Zhong <zhongjiajie955@gmail.com> * Feature: allow configuration / increase of gunicorn timeout (#5783) * New Query Runner: Netezza Performance Server (#5771) Co-authored-by: Jesse <jwhitehouse@airpost.net> * Clickhouse: Multi-statements support (#5792) ClickHouse query runner splits query into several and execute each query in turn. The result of the last execution is returned. Implementation uses ClickHouse sessions in the HTTP protocol. `session_id` is generated for the first query and then it is used with the subsequent queries (together with the `session_check` parameter). If query runner gets a success response with empty body from ClickHouse (for example, in case of temporary table creation request) query runner returns empty response. authored-by: Liubov Ulitina <ulitinalm@vl.ru> * README: update list of supported data sources (#5790) Co-authored-by: Jesse Whitehouse <jesse@whitehouse.dev> * New ElasticSearch Query Runner (#5794) - A runner supporting the newest versions of ES, aggregation, nested aggregations and nested fields. - A runner for the SQL OpenDistro flavor - A runner for the SQL X-Pack flavor Co-authored-by: Nicolas Le Manchet <nicolas@lemanchet.fr> Co-authored-by: wwl717195673 <717195673@qq.com> * README: add MariaDB to supported data sources (#5808) * Databricks ODBC Driver: follow redirects (#5814) Use curl --location * Fix typo in users.py (#5818) seperated -> separated * Adding Apache Pinot Query Runner (#5798) * Adding Apache Pinot integration * address comments * Microsoft Teams Webhook alert destination (#5691) * Microsoft Teams Webhook alert destination * Text formatting and new image for Microsoft Teams Webhook * Comment on how to build frontend * Add title to clarify webhook URL * Make the message into a configurable template. * Improve visibility of error message during schema retrieval (#5879) * handle query execution error in one place. increase ability to debug issues with schema retrieval * split message and details for error reporting Co-authored-by: Dmitriy Apollonin <dmitriy.apollonin@aspireiq.com> * fix: Support importlib_metadata v5.0.0 (#5840) * fix: Support importlib_metadata v5.0.0 importlib_metadata removed compatibility shims for deprecated entry point interfaces. see: https://github.com/python/importlib_metadata/blob/main/CHANGES.rst#v500 Filter result of entry_points function by group parameter. see: https://importlib-metadata.readthedocs.io/en/latest/api.html#importlib_metadata.entry_points * fix: Enable to run in older python version In circleci frontend-unit-tests, old node image is used and python 3.5 is used. Support both old version and latest version by checking ijmportlib_metadata version * bug fix SAML_LOGIN_ENABLED setting logic (#5784) * fix word spell (#5859) Co-authored-by: guyu <guyu@fordeal.com> * Update references from Discourse to Discussions. (#5916) * see https://discuss.redash.io/t/redash-datasource-connection-test-fails/9989 (#5898) * Remove extensions mechanism (#5895) * Remove extensions mechanism. * Missing change. * Add "set -e" to docker_build (#5896) * feat: New support databend for redash (#5902) * feat: New support databend for redash * fix * Update development workflow for Apple Silicon, Node version, default port, and maildev image (#5932) * Update ngines definition to allow for newer versions of Node. With Node version 19 I stumbled into some issues so for now bumped it to v16, until we get to updating the libraries we use. * docker-compose.yml updates: 1. Switch to newer maildev docker image. 2. Update local port to 5001 as 5000 seems to be used by a system process now. * Update pymssql and pyarrow. Also commented out ibm-db until we have a way to not install it only on ARM. * Fix group not found message. (#5935) * Fix/databend params (#5937) * fix: databend params * add databend logo * fix log * fix log * Update redash/query_runner/databend.py Co-authored-by: Arik Fraimovich <arik@arikfr.com> --------- Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Add liveness check for workers (#5886) * Add liveness check script for workers closes #5885 * delete extra script * Rename worker_healthcheck -> workers_healthcheck --------- Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Bump mysqlclient from 1.3.14 to 2.1.1, memsql from 3.0.0 to 3.2.0, fixing MySQL multi statement support (#5957) --------- Signed-off-by: koooge <koooooge@gmail.com> Co-authored-by: Levko Kravets <levko.ne@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Jim Sparkman <jim.sparkman@houselogix.com> Co-authored-by: Omer Lachish <omer@rauchy.net> Co-authored-by: Mike Nason <nason@narrator.ai> Co-authored-by: Daniel Lang <me@daniellang.net> Co-authored-by: Vladislav Denisov <denisov@sports.ru> Co-authored-by: Alex Kovar <ajkovar@gmail.com> Co-authored-by: Levko Kravets <kravets-levko@users.noreply.github.com> Co-authored-by: Lei Ni <65617553+leini-db@users.noreply.github.com> Co-authored-by: Arik Fraimovich <arik@arikfr.com> Co-authored-by: Jannis Leidel <jannis@leidel.info> Co-authored-by: simonschneider-db <44668299+simonschneider-db@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ben Amor <43776482+benamorbe@users.noreply.github.com> Co-authored-by: Tobias Macey <tmacey@boundlessnotions.com> Co-authored-by: koooge <koooooge@gmail.com> Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io <commits@restyled.io> Co-authored-by: peterlee <yankeeguyu@gmail.com> Co-authored-by: max-voronov <70445727+max-voronov@users.noreply.github.com> Co-authored-by: Lingkai Kong <lingkai.kong@databricks.com> Co-authored-by: Alexander Rusanov <alexander.rusanov@gmail.com> Co-authored-by: Rafael Wendel <rafawendel2010@gmail.com> Co-authored-by: Christopher Grant <chrisgrant@lavabit.com> Co-authored-by: Chad Chen <chad.chen@databricks.com> Co-authored-by: Jonathan Hult <jonathan@jonathanhult.com> Co-authored-by: Jerry <610819267@qq.com> Co-authored-by: Jerry <jerry.yuan@webweye.com> Co-authored-by: Josh Bohde <josh@joshbohde.com> Co-authored-by: deecay <deecay@users.noreply.github.com> Co-authored-by: Jiajie Zhong <zhongjiajie955@hotmail.com> Co-authored-by: Elad Ossadon <elado7@gmail.com> Co-authored-by: Elad Ossadon <elad.ossadon@databricks.com> Co-authored-by: Patrick Yang <patrick.yang@databricks.com> Co-authored-by: Tim Gates <tim.gates@iress.com> Co-authored-by: Christopher Grant <christopher.grant@protonmail.com> Co-authored-by: Vipul Mathur <vipulmathur@users.noreply.github.com> Co-authored-by: Justin Talbot <76974990+justint-db@users.noreply.github.com> Co-authored-by: Đặng Minh Dũng <dungdm93@live.com> Co-authored-by: Sebastian Tramp <mail@sebastian.tramp.name> Co-authored-by: Jesse <jesse.whitehouse@databricks.com> Co-authored-by: Nolan Nichols <nnichols@mazetx.com> Co-authored-by: iwakiriK <balssearch0113@gmail.com> Co-authored-by: Ben Herzberg <69909379+BenSatori@users.noreply.github.com> Co-authored-by: adamzwakk <shamist@gmail.com> Co-authored-by: Jawshua <Jawshua@users.noreply.github.com> Co-authored-by: case-k-git <40357957+case-k-git@users.noreply.github.com> Co-authored-by: Omer Lachish <289488+rauchy@users.noreply.github.com> Co-authored-by: Shen Li <shenli3514@gmail.com> Co-authored-by: Kyunghwan Ko <64265107+kyunghwan1207@users.noreply.github.com> Co-authored-by: Tucker Leavitt <tucker.leavitt@gmail.com> Co-authored-by: Jesse <jwhitehouse@airpost.net> Co-authored-by: zoomdot <gninggoon@gmail.com> Co-authored-by: rajeshSigmoid <89909168+rajeshSigmoid@users.noreply.github.com> Co-authored-by: Aratrik Pal <44343120+AP2008@users.noreply.github.com> Co-authored-by: Dan Goldin <dangoldin@gmail.com> Co-authored-by: rajeshmauryasde <rajeshk@sigmoidanalytics.com> Co-authored-by: Katsuya Shimabukuro <katsu.generation.888@gmail.com> Co-authored-by: Katsuya Shimabukuro <katsuya-shimabukuro@freee.co.jp> Co-authored-by: Robin Zheng <zhengr@msn.com> Co-authored-by: Steven Hao <stevenhao@users.noreply.github.com> Co-authored-by: be30c9 <92396435+be30c9@users.noreply.github.com> Co-authored-by: Tin C <tim5go@gmail.com> Co-authored-by: Kevin Chiang <kchiang@tesla.com> Co-authored-by: kevinchiang <kevinchiang@outlook.com> Co-authored-by: anshulhiran <89910231+anshulhiran@users.noreply.github.com> Co-authored-by: JyothiGandi <JyothiGandi@users.noreply.github.com> Co-authored-by: Bruno Agutoli <bruno@propelleraero.com.au> Co-authored-by: adamzwakk <adam@adamzwakk.com> Co-authored-by: Jesse <jesse@whitehouse.dev> Co-authored-by: Gabriel A. Devenyi <gdevenyi@gmail.com> Co-authored-by: Ian <68525743+decaffeinatedio@users.noreply.github.com> Co-authored-by: Greg Stein <gstein@gmail.com> Co-authored-by: Leandro Lorenzini <leandro@outlook.sg> Co-authored-by: ban-lee-seng <banleesengpaints.marketing@gmail.com> Co-authored-by: Bryan Yang <kenshin2004528@gmail.com> Co-authored-by: Hugo Gresse <hugo.gresse@gmail.com> Co-authored-by: Jiajie Zhong <zhongjiajie955@gmail.com> Co-authored-by: Jacek Jabłoński <35669512+jacek-jablonski@users.noreply.github.com> Co-authored-by: Aniket Kulkarni <aniket-s-kulkarni@users.noreply.github.com> Co-authored-by: Nicolas Le Manchet <nicolas@lemanchet.fr> Co-authored-by: wwl717195673 <717195673@qq.com> Co-authored-by: luc-x41 <45362069+luc-x41@users.noreply.github.com> Co-authored-by: trigremm <askhat.molkenov@gmail.com> Co-authored-by: Ikko Ashimine <eltociear@gmail.com> Co-authored-by: Xiang Fu <xiangfu.1024@gmail.com> Co-authored-by: Dmitriy <apollonin@gmail.com> Co-authored-by: Dmitriy Apollonin <dmitriy.apollonin@aspireiq.com> Co-authored-by: tsbkw <s-tsubokawa@mercari.com> Co-authored-by: Izumu KUSUNOKI <izumu.kusunoki@gmail.com> Co-authored-by: guyu <guyu@fordeal.com> Co-authored-by: Zach Liu <zachliu@users.noreply.github.com> Co-authored-by: Genki Sugawara <sugawara@winebarrel.jp> Co-authored-by: Jeremy <hantmac@outlook.com> Co-authored-by: David Choi <themars@gmail.com> Co-authored-by: Shubham Jain <shubhrjain7@gmail.com> Co-authored-by: myonlylonely <myonlylonely@users.noreply.github.com>
* Fix CLI command for "status" (#4989) * Fix CLI command for "status" CLI command "status" can fail due to incorrect connection information to RQ. This change matches the behavior from line 65 and solves the connection error. * Move connection up to CLI entrypoint * Some permissions fixes (#4994) * Don't show New ... buttons on list pages if user doesn't have corresponding permissions * Hide Create menu item if no create actions available * Catch QueryResultError on widget load (#4991) * Refactor Organization Settings and add extension points to it (#4995) * Split OrganizationSettings page into components * Update change handling: use objects instead of string keys, move some logic to more appropriate place * Convert OrganizationSettings page to functional component and refine code a bit * Add some extension points * Improve onChange handler Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Refactor User Profile page and add extension points to it (#4996) * Move components specific to UserProfile page to corresponding folder * Split UserProfile page into components * Rename components, refine code a bit * Add some extension points * Fix margin * Allow unregistering settings tabs (#5000) * Dynamically register frontend routes (#4998) * Allow to override frontend routes * Configure app before initializing ApplicationArea * Refine code * Avoid purging operational queues (#4973) * avoid purging operational queues * schema queues actually run queries, so they should be purged * Fix org option in users create_root cli command (#5003) Thanks @nason 👍 * Remove pace-progress (#4990) * Delete locks for cancelled queries (#5006) * delete locks for cancelled queries * test that query cancellations do not prevent reenqueues * Too large visualization cause filters block to collapse (#5007) * Textbox: confirm close if text was changed (#5009) * Textbox: confirm close if text was changed * Update texting (with @gabrieldutra) * Update texting Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Allow private addresses when enforcing is disabled (#4983) * Custom primary/foreign key types (#5008) * allow overriding the type of key used for primary/foreign keys of the different models * rename key_types to singular key_type * add some documentation for `database_key_definitions` * Add "Last 12 months" option to dynamic date ranges (#5004) * Fixed broken custom JS visualization settings (#5013) * Python query runner fix (#4966) * fixed print method * fixed `.items()` error * added extra builtins * added guarded_unpack_sequence * add a couple of missed custom key types hooks (#5014) * Databricks custom Schema Browser (#5010) * Allow GET from non-admins on data source resource (#4992) * Handle React exception when a function is provided (#5016) * Add plus between tags to clarify how they are used #4628 (#5017) Co-authored-by: Levko Kravets <kravets-levko@users.noreply.github.com> Co-authored-by: Levko Kravets <kravets-levko@users.noreply.github.com> * Y-axis autoscale fails when min or max is set (#4904) * getredash/redash#4784 Y-axis autoscale fails when min or max is set * Update tests Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Fix Databricks Schema Browser scrollbar (#5023) * Refactor: extract commonly used pattern into hook (#5022) * Explicitly sort routes to reduce a chance of conflicts (#5020) * Explicitly sort routes to reduce (avoid at all?) a chance of conflicts * Sort routes by params count * Fix: sorting queries by schedule was resulting in a wrong order (#4954) * fix schedule sorting issue * style change * Update to meet code style. * move the schedule sort to backend * mod comment Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Query Source: Add Shift+Enter shortcut for query execution (#5037) * Fix schema browser items height (#5024) * Dynamic Form: Make default extra fields state a prop (#5039) * purge_failed_jobs can take up to several minutes, so better have a proper timeout (#5033) * Visualizations Library: Enhance docs (#4946) * Allow to change order of legend items (#5021) * Allow to change order of legend items * Update tests * Update Ace Editor version (#5041) * getredash/redash#5031 Counter is too large on Query View/Source pages (#5044) * Databricks Schema Browser: Allow eventlet worker instead of RQ (#5045) * Add loading button in UI * Handle databricks schema requests without RQ * Don't use gevent worker * Revert "Don't use gevent worker" This reverts commit 9704c70a941a68c249db73e0450961e608fc0507. * Use eventlet * Use first column instead of 'namespace' one * Revert "Add loading button in UI" This reverts commit c0e4dfb966714a9f9e23977ab659e64afb5ce255. * Remove databricks tasks * Update eventlet * Add libevent * Display logs on failure * Revert "Add libevent" This reverts commit a00d067cb77b6f4f9919cf47f1d15c34d107a18c. * Test updating gunicorn * Don't set eventlet as the default for Redash Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Remove fetchDataFromJob usage Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Dashboard URL does not show new name when dashboard name is updated (#1009) * on dashboard api calls - take the id from the beginning of the slug, unless there is no number in it - in that case, take the entire slug as id * add dashboard id when showing links to dashboards * change path to include new name when renaming dashboards * move slug generation to backend * redirect to new name after changing (this time with a proper promise) * oh right, we already have a slug function * add spec that makes sure that renamed dashboards are redirected to the url which contains their new name * use id-slug in all Cypress specs * move dashboards from /dashboard/:slug to /dashboards/:id-:name_as_slug * Update dashboard url as its name changes * Update separator to be "/" * Update missing dashboard urls * Update api not to depend on int id * Use '-' instead of '/' as separator and update Dashboard.get calls * slug -> name_as_slug * Keep slug urls on cypress * Update route path * Use legacy attr for GET * Use getter for urlForDashboard * Update dashboard url when loaded by slug * Update Dashboard routes to use id instead of slug * Update Dashboard handler tests * Update Cypress tests * Fix create new dashboard spec * Use axios { params } * Drop Ternary operator * Send updated slug directly in 'slug' attr * Update multiple urls Dashboard test name * Update route names Co-authored-by: Levko Kravets <levko.ne@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Fix bundle-extensions script to work on recent importlib-resources. (#5050) Also adds a test case for running the script. * Add TypeScript support (#5027) * TASK Add typescript dependencies to package.json * TASK Add typescript to build process and npm scripts and TASK Move example components to typescript and add an example definition file. * TASK Move back to ts-loader instead of babel typescript preset * FIX Remove unnecessary changes * FIX Explicitly mention tsconfig file in webpack.config.js to avoid `error while parsing tsconfig.json, The 'files' list in config file 'tsconfig.json' is empty` See (https://github.com/TypeStrong/ts-loader/issues/405#issuecomment-330108362) * FIX Move tsconfig to client subdirectory to make it accessible in docker container (only webpack.config.js is copied over from root folder in Dockerfile) * TASK Move from ts-loader to babel to reduce compatibility issues between ES6/7 and typescript compilation. * TASK Add types for classnames, hoist-non-react-statics and lodash. Fix default export of DashboardList and run prettier on eslintrc * Run npm install * Trigger tests * Run npm install 2 * Trigger tests * Eager load outdated queries (#5049) * eager load outdated queries * explicitly use .all() instead of list() * Bump lodash from 4.17.15 to 4.17.19 in /viz-lib (#5051) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix wrong Y-axis range for stacked bar chart (#5029) * getredash/redash#5026 Fix wrong Y-axis range for stacked bar chart * Update tests * Use Plotly's built-in algorinthm to compute Y-axis range * Update tests * Revert previous solution (yRange-related code) * Revert other unrelated changes * Revert other unrelated changes * Move chart rendering to own file and ensure that rendering steps will occur in necessary order * Reduce amount of plot updates by mergin separate updates into a sigle cumulative update * Give better names for several functions * Load extensions on db init (#5062) * Only try to create tables and stamp DB if not tables exist already. * load extensions when creating the database * Add Column Type to Databricks schema browser (#5052) * Add Column Type to Databricks schema browser * Map schema columns to be an object * Format pg with Black * Add data_type for Postgres * Add override mechanism for webpack config (#5057) * loosen up some proptypes and backend casting to allow different primary key types (#5066) * Move page size select to the Paginator component (#5064) * Queries list: move "My Queries" above "Archived" (#5072) * Introduce caching to the Databricks Schema Browser (#5038) * Add refresh button in the bottom * Add caching * Drop allSettled * Simplify refresh button * Update error to return 500 * Load tables before loading columns * Don't mutate schema * Reset db name and schemas when changing data source * Load both tables and columns * Return error with code 200 * Code review updates * Add expiration time to the cache Keys * Back with RQ * Make sure Policy is loaded for user session (#5081) * Exposing setting for overriding template directory (#4324) When using some of the customized login flows such as `REMOTE_USER` the deployed site breaks due to not finding template files. This change updated the app default to use the existing Flask templates directory rather than the compiled static assets directory which only contains an index.html file. * fix: Compose version due to --build-arg (#5083) Signed-off-by: koooge <koooooge@gmail.com> * Add: periodic job to remove ghost locks. (#5087) * Bar chart with second y axis overlaps data series (#4150) * Add support for CSRF tokens (#5055) * add flask-wtf * add CSRF tokens to all static forms * add CSRF tokens to all axios requests * disable CSRF validation in unit tests * support CSRF-protected requests in *most* cypress tests * don't enfroce CSRF checks by default * avoid CSRF enforcement in unit tests * remove redundant spread * some camel casing hiccups * always yield the CSRF cookie, but avoid enforcing it if CSRF toggle is off * Restyled by prettier (#5056) Co-authored-by: Restyled.io <commits@restyled.io> * set a CSRF header only if cookie is present * enforce CSRF in CI * install lodash directly for Cypress * install request-cookies directly for Cypress. We should probably start loading package.json deps * enable CSRF support when logout and login happen within the same spec Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io <commits@restyled.io> * Make table visualization header fixed (#5103) * add lock table header * Move styling to a new class * Update renderer.less * Move class to table and fix top border * Update renderer.less * Update viz-lib/src/visualizations/table/renderer.less Thanks, this change is good to me. Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * CSRF Exempts (#5108) * if present, always convert CSRF cookies to headers * exempt auth blueprints from CSRF protection * respect CSRF exempts * Update Organization Settings (#5114) * Update Organization Settings * Cypress: Update tab naming * Make DataSourceListComponent a dynamic component (#5113) * Use Skeleton as ItemsList loading state (#5079) * Cypress touch-ups (#5109) * allow non-sequential IDs for DataSources in Cypress tests * refactor redash-api to a set of Cypress commands * support mounting Redash endpoints in Cypress routes * fix some parameter specs by waiting for schema to load * extract baseUrl from cypress.json * Restyled by prettier (#5110) Co-authored-by: Restyled.io <commits@restyled.io> Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io <commits@restyled.io> * Remove content width limit on all pages (#5091) * Remove content width limit on all pages * Update client/app/assets/less/inc/base.less Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Remove content limit; limit sidebar width Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Keep widget loading when fetch request is replaced (#5118) * Fix create link on data sources page (#5121) * Fix create link on data sources page * Cypress: Add test that the source dialog opens * Add DynamicComponent to PermissionsControl flag (#5116) * Misc changes to codebase back ported from internal fork (#5129) * Set corejs version in .babelrc so Jest doesn't complain. * Rewrite services/routes in TypeScript. * Add TypeScript definitions for DialogComponent. * Make image paths more portable * Add current route context and hook. * Make EmptyState more flexible by being able to pass in getSteps function. * Rewrite ItemsList in TypeScript. * Introduce the possibility to add custom sorters for a column. * Rearrange props to be friendly to TypeScript. * Type definitions for NotificationApi. * Use Databricks query editor components for databricks_internal type of query runner. * URL Escape password in Alembic configuration. * Compare types in migrations. * Misc changes to codebase back ported from internal fork - part 2 (#5130) * Auth: make login url configurable. * More portable image url. * durationHumanize: support for milliseconds. * Sorter: support for custom sort. * Upgrade Ant Design to v4 (#5068) * Introduce Link component (#5122) * Introduce Link component * Use Link component for external links as well * Remove unused file (I hope it's really not needed) * Use Link component in visualizations library * Simplify Link component implementation * CR1 * Trigger build * CR2 * Support multiple queries in a single query box (#5058) * Support multiple queries in a single query box * Implement statement splitting function and add tests for it * Add a test for databricks-specific syntax * Split statements before running query * Add toggle to disable public URLs (#5140) * Add toggle to disable public URLs * Add Cypress tests * Antd v4: Fix CreateUserDialog (#5139) * Antd v4: Update CreateUserDialog * Add Cypress test for user creation * Misc frontend changes from internal fork (#5143) * Move CardsList to typescript (#5136) * Refactor CardsList - pass a suffix for list item Adding :id to an item to be used as a key suffix is redundant and the same can be accomplished by using :index from the map function. * Move CardsList to typescript * Convert CardsList component to functional component * CR1 * CR2 * Keep selected filters when switching visualizations (#5146) * getredash/redash#4944 Query pages: keep selected filters when switching visualizations * Pass current filters to expanded widget modal * prevent assigning queries to view_only data sources (#5152) * Add default limit (1000) to SQL queries (#5088) * add default limit 1000 * Add frontend changes and connect to backend * Fix query hash because of default limit * fix CircleCI test * adjust for comment * Allow to clear selected tags on list pages (#5142) * Convert TagsList to functional component * Convert TagsList to typescript * Allow to unselect all tags * Add title to Tags block and explicit "clear filter" button * Some tweaks * Keep additional URL params when forking a query (#5184) * Refresh CSRF tokens (#5177) * expire CSRF tokens after 6 hours * use axios' built-in cookie to header copy mechanism * add axios-auth-refresh * retry CSRF-related 400 errors by refreshing the cookie * export the auth refresh interceptor to support ejecting it if neccessary * reject the original request if it's unrelated to CSRF * add 'cancelled' meta directive to all cancelled jobs (#5187) * Ask user to log in when session expires (#5178) * Ask user to log in when session expires * Update implementation * Update implementation * Minor fix * Update modal * Do not intercept calls to api/session as Auth.requireSession() relies on it * Refine code; adjust popup size and position * Some Choropleth improvements/refactoring (#5186) * Directly map query results column to GeoJSON property * Use cache for geoJson requests * Don't handle bounds changes while loading geoJson data * Choropleth: fix map "jumping" on load; don't save bounds if user didn't edit them; refine code a bit * Improve cache * Optimize Japan Perfectures map (remove irrelevant GeoJson properties) * Improve getOptions for Choropleth; remove unused code * Fix test * Add US states map * Convert USA map to Albers projection * Allow to specify user-friendly field names for maps * Align Y axes at zero (#5053) * Align Y axes as zero * Fix typo (with @deecay) * Add alignYAxesAtZero function * Avoid 0 division Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Generate Code Coverage report for Cypress (#5137) * Move Cypress to dev dependencies (#3991) * Test Cypress on package list * Skip Puppeteer Chromium as well * Put back missing npm install on netlify.toml * Netlify: move env vars to build.environment * Remove cypress:install script * Update Cypress dockerfile * Copy package-lock.json to Cypress dockerfile * ScheduleDialog: Filter empty interval groups (#5196) * Share Embed Spec: Make sure query is executed (#5191) * Updated Cypress to v5.3 and fixed e2e tests (#5199) * Upgraded Cypress to v5.3 and fixed e2e tests * Updated cypress image * Fixed failing tests * Updated NODE_VERSION in netlify * Update client/cypress/integration/visualizations/choropleth_spec.js Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * fixed test in choropleth Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Extra actions on Queries and Dashboards pages (#5201) * Extra actions for Query View and Query Source pages * Convert Queries List page to functional component * Convert Dashboards List page to functional component * Extra actions for Query List page * Extra actions for Dashboard List page * Extra actions for Dashboard page * Pass some extra data to Dashboard.HeaderExtra component * CR1 * Remove build args from Cypress start script (#5203) * Frontend updates from internal fork (#5209) * Add horizontal bar chart (#5154) * added bar chart boilerplate * added x/y manipulation * replaced x/y management to inner series preparer * added tests * moved axis inversion to all charts series * removed line and area * inverted labels ui * removed normalizer check, simplified inverted axes check * finished working hbar * minor review * added conditional title to YAxis * generalized horizontal chart for line charts, resetted state on globalSeriesType change * fixed updates * fixed updates to layout * fixed minor issues * removed right Y axis when axes inverted * ran prettier * fixed updater function conflict and misuse of getOptions * renamed inverted to swapped * created mappingtypes for swapped columns * removed unused import * minor polishing * improved series behaviour in h-bar * minor fix * added basic filter to ChartTypeSelect * final setup of filtered chart types * Update viz-lib/src/components/visualizations/editor/createTabbedEditor.jsx * added proptypes and renamed ChartTypeSelect props * Add missing import * fixed import, moved result array to global scope * merged import * clearer naming in ChartTypeSelect * better lodash map syntax * fixed global modification * moved result inside useMemo Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Fix Home EmptyState help link (#5217) * Static SAML configuration and assertion encryption (#5175) * Change front-end and data model for SAML2 auth - static configuration * Add changes to use inline metadata. * add switch for static and dynamic SAML configurations * Fixed config of backend static/dynamic to match UI * add ability to encrypt/decrypt SAML assertions with pem and crt files. Upgraded to pysaml2 6.1.0 to mitigate signature mismatch during decryption * remove print debug statement * Use utility to find xmlsec binary for encryption, formatting saml_auth module * format SAML Javascript, revert want_signed_response to pre-PR value * pysaml2's entityid should point to the sp, not the idp * add logging for entityid for validation * use mustache_render instead of string formatting. put all static logic into static branch * move mustache template for inline saml metadata to the global level * Incorporate SAML type with Enabled setting * Update client/app/pages/settings/components/AuthSettings/SAMLSettings.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Chad Chen <chad.chen@databricks.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Fix dashboard background grid (#5238) * added required to Form.Item and Input for better UI (#5231) * added required to Form.Item and Input for better UI * removed required from input * Revert "removed required from input" This reverts commit b56cd76fa1b1eba4e337e55c2797b6a5d64f2699. * Redo "removed required from input" * removed typo Co-authored-by: rafawendel2010@gmail.com <rafawendel> * Fix annotation bug causing queries not to run - ORA-00933 (#5179) * Fix for the typo button in ParameterMappingInput (#5244) * extend the refresh_queries timeout from 3 minutes to 10 minutes (#5253) * Multiselect dropdown slowness (fix) (#5221) * created util to estimate reasonable width for dropdown * removed unused import * improved calculation of item percentile * added getItemOfPercentileLength to relevant spots * added getItemOfPercentileLength to relevant spots * Added missing import * created custom select element * added check for property path * removed uses of percentile util * gave up on getting element reference * finished testing Select component * removed unused imports * removed older uses of Option component * added canvas calculation * removed minWidth from Select * improved calculation * added fallbacks * added estimated offset * removed leftovers 😅 * replaced to percentiles to max value * switched to memo and renamed component * proper useMemo syntax * Update client/app/components/Select.tsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * created custom restrictive types * added quick const * fixed style * fixed generics * added pos absolute to fix percy * removed custom select from ParameterMappingInput * applied prettier * Revert "added pos absolute to fix percy" This reverts commit 4daf1d4bef9edf93cd9bb1f404bd022472ff17a2. * Pin Percy version to 0.24.3 * Update client/app/components/ParameterMappingInput.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * renamed Select.jsx to SelectWithVirtualScroll Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * bugfix: fix #5254 (#5255) Co-authored-by: Jerry <jerry.yuan@webweye.com> * Enable graceful shutdown of rq workers (#5214) * Enable graceful shutdown of rq workers * Use `exec` in the `worker` command of the entrypoint to propagate the `TERM` signal * Allow rq processes managed by supervisor to exit without restart on expected status codes * Allow supervisorctl to contact the running supervisor * Add a `shutdown_worker` command that will send `TERM` to all running worker processes and then sleep. This allows orchestration systems to initiate a graceful shutdown before sending `SIGTERM` to supervisord * Use Heroku worker as the BaseWorker This implements a graceful shutdown on SIGTERM, which simplifies external shutdown procedures. * Fix imports based upon review * Remove supervisorctl config * Enable Boxplot to be horizontal (#5262) * Frontend updates from internal fork (#5259) * DynamicComponent for QuerySourceAlerts * General Settings updates * Dynamic Date[Range] updates * EmptyState updates * Query and SchemaBrowser updates * Adjust page headers and add disablePublish * Policy updates * Separate Home FavoritesList component * Update FormatQuery * Autolimit frontend fixes * Misc updates * Keep registering of QuerySourceDropdown * Undo changes in DynamicComponent * Change sql-formatter package.json syntax * Allow opening help trigger in new tab * Don't run npm commands as root in Dockerfile * Cypress: Remove extra execute query * Correct cleanup_query_results comment (#5276) Correct comment from QUERY_RESULTS_MAX_AGE to QUERY_RESULTS_CLEANUP_MAX_AGE * Remove unwanted props from Select component (#5277) * Explicitly selected props so as to avoid errors from non-wanted props * Simplified approach * Ran prettier 😬 * Fixed minor issues * Fix QuerySourceDropdown value type (#5284) * Changed 'Delete Alert' into 'Delete' for consistency (#5287) * Redesign desktop nav bar (#5294) * Add React Fast Refresh + Hot Module Reloading (#5291) * removed leftover console.log (#5303) * Fix disabled hot reload flow (#5306) * Sync date format from settings with clientConfig (#5299) * added eslint no-console (#5305) * added eslint no-console * Update client/.eslintrc.js to allow warnings Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Convert viz-lib to TypeScript (#5310) Co-authored-by: ts-migrate <> * change item element in system status page (#5323) * Obfuscate non-email alert destinations (#5318) * Dropdown param search fix (#5304) * fixed QueryBasedParamterInput optionFilterProp * added optionFilterProp fallback for SelectWithVirtualScroll * simplified syntax * removed optionFilterProp from QueryBasedParameterInput.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * restricted SelectWithVirtualScroll props * Added e2e test for parameter filters * moved filter assertion to more suitable place * created helper for option filter prop assertion * moved option filter prop assertion to proper place, added result update assertion * refactor openAndSearchAntdDropdown helper * Fix parameter_spec Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Add Username and Password fields to MongoDB config (#5314) * docs: fix simple typo, possbily -> possibly (#5329) There is a small typo in redash/settings/__init__.py. Should read `possibly` rather than `possbily`. * Secret handling for Yandex, TreasureData, & Postgres/CockroachDB SSL (#5312) * Bar chart e2e test (#5279) * created bar-chart e2e test boilerplate * refactored assertions * added snapshots and dashboard * refactored assertions to properly deal with async * replaced loops with getters for proper workings of cypress * added a couple other bar charts * ran prettier * added a better query for bar charts * removed leftovers * moved helpers to support folder Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Truncate large Databricks ODBC result sizes (#5290) Truncates results sets that exceed a limit taken from an environment variable called DATABRICKS_ROW_LIMIT. * Add reorder to dashboard parameter widgets (#5267) * added paramOrder prop * minor refactor * moved logic to widget * Added paramOrder to widget API call * Update client/app/components/dashboards/dashboard-widget/VisualizationWidget.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Merge branch 'master' into reorder-dashboard-parameters * experimental removal of helper element * cleaner comment * Added dashboard global params logic * Added backend logic for dashboard options * Removed testing leftovers * removed appending sortable to parent component behavior * Revert "Added backend logic for dashboard options" This reverts commit 41ae2ce4755a6fa03fd76d900819b11016919275. * Re-structured backend options * removed temporary edits * Added dashboard/widget param reorder cypress tests * Separated edit and sorting permission * added options to public dashboard serializer * Removed undesirable events from drag * Bring back attaching sortable to its parent This reverts commit 163fb6fef5ecf7ec9924d5ff2dddcb4d889caab8. * Added prop to control draggable destination parent * Removed paramOrder fallback * WIP (for Netflify preview) * fixup! Added prop to control draggable destination parent * Better drag and drop styling and fix for the padding * Revert "WIP (for Netflify preview)" This reverts commit 433e11edc353b645410bac4bc162819ffd37d89a. * Improved dashboard parameter Cypress test * Standardized reorder styling * Changed dashboard param reorder to edit mode only * fixup! Improved dashboard parameter Cypress test * fixup! Improved dashboard parameter Cypress test * Fix for Cypress CI error Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Fix inconsistent Sankey behavior (#5286) * added type casting to coerce number string into nuber * Merge branch 'master' into fix-inconsistent=sankey-behavior * typed map viz options * Partially typed what was possible * reworked data coercion * improved MapOptionsType types * readaqueted sankey rows so as to allow strings again * Use legacy resolver in pip to fix broken build (#5309) Fixes #5300 and fixes #5307 There have been upstream (`python:37-slim` image) changes that bring in `pip` version 20.3.1, which makes new `2020-resolver` the default. Due to that, un-resolvable dependency conflicts in `requirements_all_ds.txt` now cause the build to fail. This is a workaround until the package versions can be updated to work with the new pip resolver. * Encrypt alert notification destinations (#5317) * Remove unnecessary space in rq log (#5345) * Fix: add a merge migration to solve multi head issue (#5364) * Add unit test to test for multi-head migrations issue * Add merge migration * Fix for Cypress flakiness generated by param_spec (#5349) * Bump dompurify from 2.0.8 to 2.0.17 in /viz-lib (#5326) Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.0.8 to 2.0.17. - [Release notes](https://github.com/cure53/DOMPurify/releases) - [Commits](https://github.com/cure53/DOMPurify/compare/2.0.8...2.0.17) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump bl from 1.2.2 to 1.2.3 in /viz-lib (#5257) Bumps [bl](https://github.com/rvagg/bl) from 1.2.2 to 1.2.3. - [Release notes](https://github.com/rvagg/bl/releases) - [Commits](https://github.com/rvagg/bl/compare/v1.2.2...v1.2.3) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump axios from 0.19.0 to 0.21.1 (#5366) Bumps [axios](https://github.com/axios/axios) from 0.19.0 to 0.21.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.0...v0.21.1) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Updated axios (#5371) * Increased waiting time to avoid flakiness (#5370) * Add My Dashboards filter option to the Dashboards list (#5375) * Add My Dashboards filter option to the Dashboards list. Added API endpoint to get the list of a user's dashboards, similar to the My Queries feature. * Update empty dashboard list state to show an invite to create a new dashboard, like My Queries * Update to Levko's suggested approach. Clean up some of the formatting for consistency. Put the 'My Queries/Dashboards' item before the Favorites since that organization seems cleaner to me. * Address Levko's comments * extend sync_user_details expiry (#5330) * Revert "Updated axios (#5371)" (#5385) This reverts commit 49536de1ed8331928cb6139d5aac2a2ebe780fc7. * Fix duplicate stylesheets (#5396) * Upgrade RQ to v1.5 (#5207) * upgrade RQ to v1.5 * set job's started_at * update healthcheck to match string worker names * delay worker healthcheck for 5 minutes from start to allow enough time to load in case many workers try to load simultaneously * log when worker cannot be found * Initial a11y improvements (#5408) * Fixed jsx-a11y problems * Changed tabIndex to type number * Initial improvements to DesktopNavbar accessibility * Added accessibility to favorites list * Improved accessibility in Desktop Navbar * Improvements in Desktop navbar semantics * Added aria roles to tags list * Fixed tabindex type * Improved aria labels in query control dropdown * Added tab for help trigger close button * Fixed typo * Improved accessibility in query selector * Changed resizable role to separator * Added label to empty state close button * Removed redundant and mistaken roles * Used semantic components * Removed tabIndex from anchor tags * Removed mistakenly set menuitem role from anchors * Removed tabIndex from Link components * Removed improper hidden aria label from icon * Reverted button and link roles in anchors for minimal merge conflicts * Replaced alt attr with aria-label for icons * Removed redundant menu role * Improved accessibility of CodeBlock * Removed improper role from schema browser * Reverted favorites list to div * Removed improper presentation role in query snippets * Tracked changes for further PR * Revert "Improved accessibility of CodeBlock" * Add aria-labelledby to the associated code labels This reverts commit 00a1685b1b37ad1ad5770880f9653dbd06d2cf3f. * Wrapped close icon into button * Add plain button (#5419) * Add plain button * Minor syntax improvements * Refactor of Link component (#5418) * Refactor of link component * Applied anchor-is-valid to Link component * Fixed Eslint error * Removed improper anchor uses * Fixed TS errors * Reset failure counter on adhoc success (#5394) * reset failure counter when query completes successfully via adhoc * Use "query_id" in metadata, but still allow "Query ID" for transition/legacy support * Add setting to identify email block domain (#5377) * Add setting to identify email block domain ref: #5368 * rename Co-authored-by: Levko Kravets <levko.ne@gmail.com> * rename and add comment Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Update redash/handlers/users.py Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Update redash/handlers/users.py Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Add more comment to settting Co-authored-by: Levko Kravets <levko.ne@gmail.com> * feat: support Trino data-source (#5411) * feat: add trino logo * feat: add trino * Improve css and add focus styles (#5420) * Add styles for focused ant menus * Add disabled styles to clickable button * Improved dashboard header syntax and added focus * Improved CSS syntax * Add interactive styles * Improved anchor dependent styles * Improved styles of widget (gray more/delete btns) * Add interactive style for favorite star * Improved style of delete btn * Make table content fill all space * Added focus and active styles * Scoped query snippets list * Fixed behavior for all major browsers * Replaced button styles with plain button * Scoped items list styles * Added focus styles to ant table * Add plain button (#5419) * Minor syntax improvements * Refactor of Link component (#5418) * Improve icon a11y (#5424) * Added screen reader CSS * Added description to external links * Added spinner icon accessibility * Added accessibility to exclamation and big message * Added question and exclamation accessibility * Hide decorative icons * Standardized link design * Added a11y to refresh icons * Added aria-label to anchors and buttons * Added a11y to conditional icons * Added applicable labels to Ant Icons * Changed escape to interpolation * Replaced external links with opens in new tab * Improved Tooltip hosts * Added aria live to temporary elements * Removed mistakenly added redundant helper * Undoes unnecessarily added interpolation * Replaced empty label with hidden * Improved full icon label * Improved display of live regions * Added note * remove unused class * Created unique id * Remove TODOs * Proper action label * Improved feedback for autocomplete toggle * feature: add id hook * refactor: use id hook * standardize white space * Query Runner: eccenca Corporate Memory (SPARQL) - query RDF / Linked Data Knowledge Graphs with redash (#5415) * add Corporate Memory Runner based on cmempy 21.2.3 * fix code style * apply some code nice ups * use extendedEnum, boolean and extra_options for schema description * use lower case sorting for data source types list This correctly orders data source names which starts with lower chars (such as eccenca Corporate Memory) * add missing dblogo * Adds configuration for `<Tooltip>` trigger on focus (#5434) * refactor: add tooltip * refactor: replace imports * feature: add focus trigger * Add jsx/a11y eslint plugin (#5439) * build: install eslint jsx/a11y * chore: add ESlint rules for jsx/a11y * bug: add exceptions * Add live regions to tooltip (#5440) * feature: add live regions to tooltip * bug: treat null case * Improve input fields a11y (#5427) * Added labels to params * Added aria-label to inputs * Linked unsemantic label with input * Replaced span with label * refactor: improve labels for schema browsers * refactor: component accepts aria label * refactor: add labels to sidebar search inputs * Embed "external" link type into `<Link>` component (#5432) * feature: add external link * refactor: split external link into own component * refactor: added link with icon * refactor: remove reduntant tab index * refactor: simplify props * refactor: fix types * refactor: bring types and components together * refactor: improve treatment of target * Prepare viz-lib release with Antd v4 (#5443) * Get the user's current groups from props instead of useEffect(). (#5450) useEffect() doesn't run until _after_ the component renders. Before the hook runs, the value of `groups` === []. And this is passed to <DynamicForm>'s `initialValue` prop. The `initialValue` is not re-evaluated after useEffect() completes. So the users groups are never updated. This change pulls the user's current groups from `user` prop on the page. * Run prettier (#5436) * run in /client * run in /viz-lib * bug: fix wrong line ts expect error * bug: fixed search pattern for prettier * Fix Ace editor keyboard trap (#5451) * bug: fix a11y and add sr notification * refactor: improvements to sr notification * Fixes issue #5445: Scheduled query not working (#5448) * use 'query_id' everywhere instead of 'Query ID' * some black while we're at it Co-authored-by: Omer Lachish <omer@rauchy.net> * fix: rollback pip version to avoid legacy resolver problem (#5467) Co-authored-by: Lingkai Kong <lingkai.kong@databricks.com> * fix: treat possibly empty hrefs (#5468) * Replace `<a>` and `<button>` with `<PlainButton>` (#5433) * Add PlainButton * refactor close icons * reorder import * refactor remaining anchors * refactor: replace remaining <button> and TODOs * refactor: changed applicable elements to type link * fix: minor details * bug: fix tooltip ternary * refactor: improve interactivity and semantics of schema list item * Replace hardcoded ids with hook (#5444) * refactor: replace hardcoded ids with hook * refactor: replace hard coded ids with lodash id (class) * Query Runner: SPARQL Endpoint Data Source (#5469) * Athena: skip tables with no StorageDescriptor (#5447) * Adds rate limit to /forgot. (#5425) Security vulnerability was disclosed by Sohail Ahmed <https://www.linkedin.com/in/sohail-ahmed-755776184/> * use ptpython instead of standard python shell (#5483) * Expire sessions after 6 hours of inactivity (#5159) Configurable with environment variables * SFS-001: Adding support for the optional host connection property (#5490) * Fixing failure report rendering (#5492) * Use the correct rq connection in `get_queues_status` (#5491) * fix big_query.py google api import error (#5482) * Refine Dockerfile caching (#5484) * README.md: Add TiDB to the Supported Data Sources (#5477) * remove redundant fields from slack alert destination (#5514) * Excel & CSV query runner (#2478) * Excel query runner * Param handling for read_excel * CSV query runner * Fix wrong module name * Use yaml as query language * Use yaml as query language for CSV * Added icon and required modules * Local address filtering * Fix syntax error * Use Yarn instead of NPM (#5541) * Fix: log message for bad auth token was malformed (#5557) * Pin python3 image version (#5570) * Fix: Edit Source button disappeared for users without CanEdit perms (#5568) * Guard against empty totalProcessedBytes in BigQuery responses (#5592) * Guard against empty totalProcessedBytes in BigQuery responses This field will be empty on query responses for tables with row level access controls enabled. * Fix whitespace * Update redash/query_runner/big_query.py Co-authored-by: Jesse <jwhitehouse@airpost.net> * Fix: Specify the protobuf version (#5608) protobuf package with a dependency of google-api-python-client released a new version (3.18.0) on September 16, 2021. Since then, the Docker build is failing, and it is presumed that there is a conflict with other DataSource packages that use protobuf. (phoenixdb, pydgraph) * Add support for Firebolt Database (#5606) * Fixes issue #5622 (#5623) * Fix: pagination is broken on the dashboard list page (#5612) * Fix: pagination is broken on the dashboard list page (#5516) * Add test that reproduces issue #5466 * Fix: Duplicate dashboard rows were returned by Dashboard.all() (#5466) * Update changelog for V10 * Update changelog for #5516 * Bump master to 11.0.0-dev (#5631) * Typo(#5636) * Fix TypeScript warning: integet -> integer typo (#5637) * Update Readme to reflect Firebolt data source (#5649) * Speed up BigQuery schema fetching (#5632) New method improves schema fetching by as much as 98% on larger schemas * Merge pull request from GHSA-vhc7-w7r8-8m34 * WIP: break the flask_oauthlib behavior * Refactor google-oauth to use cryptographic state. * Clean up comments * Fix: tests didn't pass because of the scope issues. Moved outside the create_blueprint method because this does not depend on the Authlib object. * Apply Arik's fixes. Tests pass. * Merge pull request from GHSA-g8xr-f424-h2rv * Merge pull request from GHSA-fcpv-hgq6-87h7 * Update changelog to incorporate security fixes and #5632 & #5606 (#5654) * Update changelog to incorporate security fixes and #5632 & #5606 * Added reference to sqlite fix * Update CircleCI configs and move advocate to main requirements file (#5658) Ported from the 10.0.x branch * Improve BigQuery schema fetching when environment contains 50+ datasets (#5667) * Fix"Unable to locate package msodbcsql17"on M1 (#5638) If you run the docker-compose on a Mac with the new M1 chip, you will get the "Unable to locate package msodbcsql17" error. Because there are currently no msodbcsql17 packages for arm64 architecture. The solution was to change the base image in the Dockerfile to change the installation to the older AMD architecture. FROM --platform=linux/amd64 python:3.7-slim-buster * Fix: make plotly charts have unbounded hoverlabel name length (#5661) * SAML auth: allow custom service provider settings from environment variable (#5621) * Python query runner: add function that transforms pandas dataframe to result format (#5629) * Fix: auto limit breaks for Oracle queries (#5181) Moves auto limit primitives to the base SQL query runner * JSON query runner: optionally skip certificate verification (#5690) Add verify option to json datasource runner to allow query developers the option of skipping certificate verification Co-authored-by: Kevin Chiang <kchiang@tesla.com> Co-authored-by: kevinchiang <kevinchiang@outlook.com> * Fix: don't accept password login requests if password auth is disabled (#5693) * Firebolt Query Runner: now uses firebold-sdk python package (#5689) * Added firebolt-sdk in place of firebolt-sqlalchemy * fixed connection issue * fixed connection issue * final commit * Moved firebolt-sdk's imports to try block Co-authored-by: rajeshSigmoid <rajeshk@sigmoidanalytics.com> * Fix: Test Connection button disabled after save (#5666) Closes #5455 * Snowflake: add option to lowercase column names (#5657) Ported from app.redash.io codebase. * Add option to lowercase column names * Black the file * Multi-filters: show all results by default (#5676) * Move user profile image url into the users.details field (#5697) Makes the details field a JSONB field per pg doc recommendations. Update model.all() method to work properly now that profile_image_url is not an independent field. Closes #4469 * Fix: Dashboard List page crashes when sorting by name (#5645) Closes #5119 * List pages: move sidebar to the left (#5698) This change took place in steps: 1. Change order of content and sidebar. Sidebar appears first, then content. 2. Fix padding * Before: content was jutted against the sidebar. The sidebar was double- padded from the edge of the content area. After: Content has 15px pad against the sidebar. Sidebar has the same pad as the page title. 3. Don't pad the content on small screens. Otherwise the content appears off-center and doesn't use all of the available space. 4. Allow Create buttons to have varying width This makes the Query, Dashboard, and Alert list pages share the same style * Update Dockerfile CHOWN into COPY (#5660) Its more efficient to chown while COPY for large stacks of files as per https://github.com/docker/for-linux/issues/388 * Update contributor guidelines and clarify PR review process (#5714) * Fix hard-coding of amd64 platform, make ARM build work. (#5687) * Fix hard-coding of amd64 platform and make amd64 package installation conditional * Cleanup Dockerfile for best practices * Enable BuildKit for docker building * [Fix] Broken image included in emails (#5719) * Disable auto limit for mssql query runner (#5777) * Use correct names for Apache projects (#5776) Apache's trademark policy says to use the full name for these products on their first mention, on a page. * Fix: mongodb schema refresh failed when user had insufficient permissions (#5734) Co-authored-by: ban-lee-seng <banleesengpaints.marketing@gmail.com> * mysql: add more configuration options (#5280) * Remove unused params in query result GET handler (#5346) * Added clear button for query-based parameter inputs (#5710) * Add unarchive button to dashboard (#4697) Co-authored-by: Jesse Whitehouse <jesse@whitehouse.dev> * New Query Runner: Arango query runner (#5124) Co-authored-by: Hugo Gresse <hugo.gresse@gmail.com> * Sort Python safe built-ins (#5781) Co-authored-by: Jiajie Zhong <zhongjiajie955@hotmail.com> Co-authored-by: Jiajie Zhong <zhongjiajie955@gmail.com> * Feature: allow configuration / increase of gunicorn timeout (#5783) * New Query Runner: Netezza Performance Server (#5771) Co-authored-by: Jesse <jwhitehouse@airpost.net> * Clickhouse: Multi-statements support (#5792) ClickHouse query runner splits query into several and execute each query in turn. The result of the last execution is returned. Implementation uses ClickHouse sessions in the HTTP protocol. `session_id` is generated for the first query and then it is used with the subsequent queries (together with the `session_check` parameter). If query runner gets a success response with empty body from ClickHouse (for example, in case of temporary table creation request) query runner returns empty response. authored-by: Liubov Ulitina <ulitinalm@vl.ru> * README: update list of supported data sources (#5790) Co-authored-by: Jesse Whitehouse <jesse@whitehouse.dev> * New ElasticSearch Query Runner (#5794) - A runner supporting the newest versions of ES, aggregation, nested aggregations and nested fields. - A runner for the SQL OpenDistro flavor - A runner for the SQL X-Pack flavor Co-authored-by: Nicolas Le Manchet <nicolas@lemanchet.fr> Co-authored-by: wwl717195673 <717195673@qq.com> * README: add MariaDB to supported data sources (#5808) * Databricks ODBC Driver: follow redirects (#5814) Use curl --location * Fix typo in users.py (#5818) seperated -> separated * Adding Apache Pinot Query Runner (#5798) * Adding Apache Pinot integration * address comments * Microsoft Teams Webhook alert destination (#5691) * Microsoft Teams Webhook alert destination * Text formatting and new image for Microsoft Teams Webhook * Comment on how to build frontend * Add title to clarify webhook URL * Make the message into a configurable template. * Improve visibility of error message during schema retrieval (#5879) * handle query execution error in one place. increase ability to debug issues with schema retrieval * split message and details for error reporting Co-authored-by: Dmitriy Apollonin <dmitriy.apollonin@aspireiq.com> * fix: Support importlib_metadata v5.0.0 (#5840) * fix: Support importlib_metadata v5.0.0 importlib_metadata removed compatibility shims for deprecated entry point interfaces. see: https://github.com/python/importlib_metadata/blob/main/CHANGES.rst#v500 Filter result of entry_points function by group parameter. see: https://importlib-metadata.readthedocs.io/en/latest/api.html#importlib_metadata.entry_points * fix: Enable to run in older python version In circleci frontend-unit-tests, old node image is used and python 3.5 is used. Support both old version and latest version by checking ijmportlib_metadata version * bug fix SAML_LOGIN_ENABLED setting logic (#5784) * fix word spell (#5859) Co-authored-by: guyu <guyu@fordeal.com> * Update references from Discourse to Discussions. (#5916) * see https://discuss.redash.io/t/redash-datasource-connection-test-fails/9989 (#5898) * Remove extensions mechanism (#5895) * Remove extensions mechanism. * Missing change. * Add "set -e" to docker_build (#5896) * feat: New support databend for redash (#5902) * feat: New support databend for redash * fix * Update development workflow for Apple Silicon, Node version, default port, and maildev image (#5932) * Update ngines definition to allow for newer versions of Node. With Node version 19 I stumbled into some issues so for now bumped it to v16, until we get to updating the libraries we use. * docker-compose.yml updates: 1. Switch to newer maildev docker image. 2. Update local port to 5001 as 5000 seems to be used by a system process now. * Update pymssql and pyarrow. Also commented out ibm-db until we have a way to not install it only on ARM. * Fix group not found message. (#5935) * Fix/databend params (#5937) * fix: databend params * add databend logo * fix log * fix log * Update redash/query_runner/databend.py Co-authored-by: Arik Fraimovich <arik@arikfr.com> --------- Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Add liveness check for workers (#5886) * Add liveness check script for workers closes #5885 * delete extra script * Rename worker_healthcheck -> workers_healthcheck --------- Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Bump mysqlclient from 1.3.14 to 2.1.1, memsql from 3.0.0 to 3.2.0, fixing MySQL multi statement support (#5957) * Extracting front-end only: removed back-end code and scripts; removed CI/CD configs --------- Signed-off-by: koooge <koooooge@gmail.com> Co-authored-by: Jim Sparkman <jim.sparkman@houselogix.com> Co-authored-by: Levko Kravets <levko.ne@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Omer Lachish <omer@rauchy.net> Co-authored-by: Mike Nason <nason@narrator.ai> Co-authored-by: Daniel Lang <me@daniellang.net> Co-authored-by: Vladislav Denisov <denisov@sports.ru> Co-authored-by: Alex Kovar <ajkovar@gmail.com> Co-authored-by: Levko Kravets <kravets-levko@users.noreply.github.com> Co-authored-by: Lei Ni <65617553+leini-db@users.noreply.github.com> Co-authored-by: Arik Fraimovich <arik@arikfr.com> Co-authored-by: Jannis Leidel <jannis@leidel.info> Co-authored-by: simonschneider-db <44668299+simonschneider-db@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ben Amor <43776482+benamorbe@users.noreply.github.com> Co-authored-by: Tobias Macey <tmacey@boundlessnotions.com> Co-authored-by: koooge <koooooge@gmail.com> Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io <commits@restyled.io> Co-authored-by: peterlee <yankeeguyu@gmail.com> Co-authored-by: max-voronov <70445727+max-voronov@users.noreply.github.com> Co-authored-by: Lingkai Kong <lingkai.kong@databricks.com> Co-authored-by: Alexander Rusanov <alexander.rusanov@gmail.com> Co-authored-by: Rafael Wendel <rafawendel2010@gmail.com> Co-authored-by: Christopher Grant <chrisgrant@lavabit.com> Co-authored-by: Chad Chen <chad.chen@databricks.com> Co-authored-by: Jonathan Hult <jonathan@jonathanhult.com> Co-authored-by: Jerry <610819267@qq.com> Co-authored-by: Jerry <jerry.yuan@webweye.com> Co-authored-by: Josh Bohde <josh@joshbohde.com> Co-authored-by: deecay <deecay@users.noreply.github.com> Co-authored-by: Jiajie Zhong <zhongjiajie955@hotmail.com> Co-authored-by: Elad Ossadon <elado7@gmail.com> Co-authored-by: Elad Ossadon <elad.ossadon@databricks.com> Co-authored-by: Patrick Yang <patrick.yang@databricks.com> Co-authored-by: Tim Gates <tim.gates@iress.com> Co-authored-by: Christopher Grant <christopher.grant@protonmail.com> Co-authored-by: Vipul Mathur <vipulmathur@users.noreply.github.com> Co-authored-by: Justin Talbot <76974990+justint-db@users.noreply.github.com> Co-authored-by: Đặng Minh Dũng <dungdm93@live.com> Co-authored-by: Sebastian Tramp <mail@sebastian.tramp.name> Co-authored-by: Jesse <jesse.whitehouse@databricks.com> Co-authored-by: Nolan Nichols <nnichols@mazetx.com> Co-authored-by: iwakiriK <balssearch0113@gmail.com> Co-authored-by: Ben Herzberg <69909379+BenSatori@users.noreply.github.com> Co-authored-by: adamzwakk <shamist@gmail.com> Co-authored-by: Jawshua <Jawshua@users.noreply.github.com> Co-authored-by: case-k-git <40357957+case-k-git@users.noreply.github.com> Co-authored-by: Omer Lachish <289488+rauchy@users.noreply.github.com> Co-authored-by: Shen Li <shenli3514@gmail.com> Co-authored-by: Kyunghwan Ko <64265107+kyunghwan1207@users.noreply.github.com> Co-authored-by: Tucker Leavitt <tucker.leavitt@gmail.com> Co-authored-by: Jesse <jwhitehouse@airpost.net> Co-authored-by: zoomdot <gninggoon@gmail.com> Co-authored-by: rajeshSigmoid <89909168+rajeshSigmoid@users.noreply.github.com> Co-authored-by: Aratrik Pal <44343120+AP2008@users.noreply.github.com> Co-authored-by: Dan Goldin <dangoldin@gmail.com> Co-authored-by: rajeshmauryasde <rajeshk@sigmoidanalytics.com> Co-authored-by: Katsuya Shimabukuro <katsu.generation.888@gmail.com> Co-authored-by: Katsuya Shimabukuro <katsuya-shimabukuro@freee.co.jp> Co-authored-by: Robin Zheng <zhengr@msn.com> Co-authored-by: Steven Hao <stevenhao@users.noreply.github.com> Co-authored-by: be30c9 <92396435+be30c9@users.noreply.github.com> Co-authored-by: Tin C <tim5go@gmail.com> Co-authored-by: Kevin Chiang <kchiang@tesla.com> Co-authored-by: kevinchiang <kevinchiang@outlook.com> Co-authored-by: anshulhiran <89910231+anshulhiran@users.noreply.github.com> Co-authored-by: JyothiGandi <JyothiGandi@users.noreply.github.com> Co-authored-by: Bruno Agutoli <bruno@propelleraero.com.au> Co-authored-by: adamzwakk <adam@adamzwakk.com> Co-authored-by: Jesse <jesse@whitehouse.dev> Co-authored-by: Gabriel A. Devenyi <gdevenyi@gmail.com> Co-authored-by: Ian <68525743+decaffeinatedio@users.noreply.github.com> Co-authored-by: Greg Stein <gstein@gmail.com> Co-authored-by: Leandro Lorenzini <leandro@outlook.sg> Co-authored-by: ban-lee-seng <banleesengpaints.marketing@gmail.com> Co-authored-by: Bryan Yang <kenshin2004528@gmail.com> Co-authored-by: Hugo Gresse <hugo.gresse@gmail.com> Co-authored-by: Jiajie Zhong <zhongjiajie955@gmail.com> Co-authored-by: Jacek Jabłoński <35669512+jacek-jablonski@users.noreply.github.com> Co-authored-by: Aniket Kulkarni <aniket-s-kulkarni@users.noreply.github.com> Co-authored-by: Nicolas Le Manchet <nicolas@lemanchet.fr> Co-authored-by: wwl717195673 <717195673@qq.com> Co-authored-by: luc-x41 <45362069+luc-x41@users.noreply.github.com> Co-authored-by: trigremm <askhat.molkenov@gmail.com> Co-authored-by: Ikko Ashimine <eltociear@gmail.com> Co-authored-by: Xiang Fu <xiangfu.1024@gmail.com> Co-authored-by: Dmitriy <apollonin@gmail.com> Co-authored-by: Dmitriy Apollonin <dmitriy.apollonin@aspireiq.com> Co-authored-by: tsbkw <s-tsubokawa@mercari.com> Co-authored-by: Izumu KUSUNOKI <izumu.kusunoki@gmail.com> Co-authored-by: guyu <guyu@fordeal.com> Co-authored-by: Zach Liu <zachliu@users.noreply.github.com> Co-authored-by: Genki Sugawara <sugawara@winebarrel.jp> Co-authored-by: Jeremy <hantmac@outlook.com> Co-authored-by: David Choi <themars@gmail.com> Co-authored-by: Shubham Jain <shubhrjain7@gmail.com> Co-authored-by: myonlylonely <myonlylonely@users.noreply.github.com>
Compacted Redash development history from the very beginning to to Apr'23 (ad7d30f91de64a291eb89892c713bd0067c47ecc) Original commits list, and co-authors: * Delete locks for cancelled queries (#5006) * delete locks for cancelled queries * test that query cancellations do not prevent reenqueues * Too large visualization cause filters block to collapse (#5007) * Textbox: confirm close if text was changed (#5009) * Textbox: confirm close if text was changed * Update texting (with @gabrieldutra) * Update texting Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Allow private addresses when enforcing is disabled (#4983) * Custom primary/foreign key types (#5008) * allow overriding the type of key used for primary/foreign keys of the different models * rename key_types to singular key_type * add some documentation for `database_key_definitions` * Add "Last 12 months" option to dynamic date ranges (#5004) * Fixed broken custom JS visualization settings (#5013) * Python query runner fix (#4966) * fixed print method * fixed `.items()` error * added extra builtins * added guarded_unpack_sequence * add a couple of missed custom key types hooks (#5014) * Databricks custom Schema Browser (#5010) * Allow GET from non-admins on data source resource (#4992) * Handle React exception when a function is provided (#5016) * Add plus between tags to clarify how they are used #4628 (#5017) Co-authored-by: Levko Kravets <kravets-levko@users.noreply.github.com> Co-authored-by: Levko Kravets <kravets-levko@users.noreply.github.com> * Y-axis autoscale fails when min or max is set (#4904) * getredash/redash#4784 Y-axis autoscale fails when min or max is set * Update tests Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Fix Databricks Schema Browser scrollbar (#5023) * Refactor: extract commonly used pattern into hook (#5022) * Explicitly sort routes to reduce a chance of conflicts (#5020) * Explicitly sort routes to reduce (avoid at all?) a chance of conflicts * Sort routes by params count * Fix: sorting queries by schedule was resulting in a wrong order (#4954) * fix schedule sorting issue * style change * Update to meet code style. * move the schedule sort to backend * mod comment Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Query Source: Add Shift+Enter shortcut for query execution (#5037) * Fix schema browser items height (#5024) * Dynamic Form: Make default extra fields state a prop (#5039) * purge_failed_jobs can take up to several minutes, so better have a proper timeout (#5033) * Visualizations Library: Enhance docs (#4946) * Allow to change order of legend items (#5021) * Allow to change order of legend items * Update tests * Update Ace Editor version (#5041) * getredash/redash#5031 Counter is too large on Query View/Source pages (#5044) * Databricks Schema Browser: Allow eventlet worker instead of RQ (#5045) * Add loading button in UI * Handle databricks schema requests without RQ * Don't use gevent worker * Revert "Don't use gevent worker" This reverts commit 9704c70a941a68c249db73e0450961e608fc0507. * Use eventlet * Use first column instead of 'namespace' one * Revert "Add loading button in UI" This reverts commit c0e4dfb966714a9f9e23977ab659e64afb5ce255. * Remove databricks tasks * Update eventlet * Add libevent * Display logs on failure * Revert "Add libevent" This reverts commit a00d067cb77b6f4f9919cf47f1d15c34d107a18c. * Test updating gunicorn * Don't set eventlet as the default for Redash Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Remove fetchDataFromJob usage Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Dashboard URL does not show new name when dashboard name is updated (#1009) * on dashboard api calls - take the id from the beginning of the slug, unless there is no number in it - in that case, take the entire slug as id * add dashboard id when showing links to dashboards * change path to include new name when renaming dashboards * move slug generation to backend * redirect to new name after changing (this time with a proper promise) * oh right, we already have a slug function * add spec that makes sure that renamed dashboards are redirected to the url which contains their new name * use id-slug in all Cypress specs * move dashboards from /dashboard/:slug to /dashboards/:id-:name_as_slug * Update dashboard url as its name changes * Update separator to be "/" * Update missing dashboard urls * Update api not to depend on int id * Use '-' instead of '/' as separator and update Dashboard.get calls * slug -> name_as_slug * Keep slug urls on cypress * Update route path * Use legacy attr for GET * Use getter for urlForDashboard * Update dashboard url when loaded by slug * Update Dashboard routes to use id instead of slug * Update Dashboard handler tests * Update Cypress tests * Fix create new dashboard spec * Use axios { params } * Drop Ternary operator * Send updated slug directly in 'slug' attr * Update multiple urls Dashboard test name * Update route names Co-authored-by: Levko Kravets <levko.ne@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Fix bundle-extensions script to work on recent importlib-resources. (#5050) Also adds a test case for running the script. * Add TypeScript support (#5027) * TASK Add typescript dependencies to package.json * TASK Add typescript to build process and npm scripts and TASK Move example components to typescript and add an example definition file. * TASK Move back to ts-loader instead of babel typescript preset * FIX Remove unnecessary changes * FIX Explicitly mention tsconfig file in webpack.config.js to avoid `error while parsing tsconfig.json, The 'files' list in config file 'tsconfig.json' is empty` See (https://github.com/TypeStrong/ts-loader/issues/405#issuecomment-330108362) * FIX Move tsconfig to client subdirectory to make it accessible in docker container (only webpack.config.js is copied over from root folder in Dockerfile) * TASK Move from ts-loader to babel to reduce compatibility issues between ES6/7 and typescript compilation. * TASK Add types for classnames, hoist-non-react-statics and lodash. Fix default export of DashboardList and run prettier on eslintrc * Run npm install * Trigger tests * Run npm install 2 * Trigger tests * Eager load outdated queries (#5049) * eager load outdated queries * explicitly use .all() instead of list() * Bump lodash from 4.17.15 to 4.17.19 in /viz-lib (#5051) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix wrong Y-axis range for stacked bar chart (#5029) * getredash/redash#5026 Fix wrong Y-axis range for stacked bar chart * Update tests * Use Plotly's built-in algorinthm to compute Y-axis range * Update tests * Revert previous solution (yRange-related code) * Revert other unrelated changes * Revert other unrelated changes * Move chart rendering to own file and ensure that rendering steps will occur in necessary order * Reduce amount of plot updates by mergin separate updates into a sigle cumulative update * Give better names for several functions * Load extensions on db init (#5062) * Only try to create tables and stamp DB if not tables exist already. * load extensions when creating the database * Add Column Type to Databricks schema browser (#5052) * Add Column Type to Databricks schema browser * Map schema columns to be an object * Format pg with Black * Add data_type for Postgres * Add override mechanism for webpack config (#5057) * loosen up some proptypes and backend casting to allow different primary key types (#5066) * Move page size select to the Paginator component (#5064) * Queries list: move "My Queries" above "Archived" (#5072) * Introduce caching to the Databricks Schema Browser (#5038) * Add refresh button in the bottom * Add caching * Drop allSettled * Simplify refresh button * Update error to return 500 * Load tables before loading columns * Don't mutate schema * Reset db name and schemas when changing data source * Load both tables and columns * Return error with code 200 * Code review updates * Add expiration time to the cache Keys * Back with RQ * Make sure Policy is loaded for user session (#5081) * Exposing setting for overriding template directory (#4324) When using some of the customized login flows such as `REMOTE_USER` the deployed site breaks due to not finding template files. This change updated the app default to use the existing Flask templates directory rather than the compiled static assets directory which only contains an index.html file. * fix: Compose version due to --build-arg (#5083) Signed-off-by: koooge <koooooge@gmail.com> * Add: periodic job to remove ghost locks. (#5087) * Bar chart with second y axis overlaps data series (#4150) * Add support for CSRF tokens (#5055) * add flask-wtf * add CSRF tokens to all static forms * add CSRF tokens to all axios requests * disable CSRF validation in unit tests * support CSRF-protected requests in *most* cypress tests * don't enfroce CSRF checks by default * avoid CSRF enforcement in unit tests * remove redundant spread * some camel casing hiccups * always yield the CSRF cookie, but avoid enforcing it if CSRF toggle is off * Restyled by prettier (#5056) Co-authored-by: Restyled.io <commits@restyled.io> * set a CSRF header only if cookie is present * enforce CSRF in CI * install lodash directly for Cypress * install request-cookies directly for Cypress. We should probably start loading package.json deps * enable CSRF support when logout and login happen within the same spec Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io <commits@restyled.io> * Make table visualization header fixed (#5103) * add lock table header * Move styling to a new class * Update renderer.less * Move class to table and fix top border * Update renderer.less * Update viz-lib/src/visualizations/table/renderer.less Thanks, this change is good to me. Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * CSRF Exempts (#5108) * if present, always convert CSRF cookies to headers * exempt auth blueprints from CSRF protection * respect CSRF exempts * Update Organization Settings (#5114) * Update Organization Settings * Cypress: Update tab naming * Make DataSourceListComponent a dynamic component (#5113) * Use Skeleton as ItemsList loading state (#5079) * Cypress touch-ups (#5109) * allow non-sequential IDs for DataSources in Cypress tests * refactor redash-api to a set of Cypress commands * support mounting Redash endpoints in Cypress routes * fix some parameter specs by waiting for schema to load * extract baseUrl from cypress.json * Restyled by prettier (#5110) Co-authored-by: Restyled.io <commits@restyled.io> Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io <commits@restyled.io> * Remove content width limit on all pages (#5091) * Remove content width limit on all pages * Update client/app/assets/less/inc/base.less Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Remove content limit; limit sidebar width Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Keep widget loading when fetch request is replaced (#5118) * Fix create link on data sources page (#5121) * Fix create link on data sources page * Cypress: Add test that the source dialog opens * Add DynamicComponent to PermissionsControl flag (#5116) * Misc changes to codebase back ported from internal fork (#5129) * Set corejs version in .babelrc so Jest doesn't complain. * Rewrite services/routes in TypeScript. * Add TypeScript definitions for DialogComponent. * Make image paths more portable * Add current route context and hook. * Make EmptyState more flexible by being able to pass in getSteps function. * Rewrite ItemsList in TypeScript. * Introduce the possibility to add custom sorters for a column. * Rearrange props to be friendly to TypeScript. * Type definitions for NotificationApi. * Use Databricks query editor components for databricks_internal type of query runner. * URL Escape password in Alembic configuration. * Compare types in migrations. * Misc changes to codebase back ported from internal fork - part 2 (#5130) * Auth: make login url configurable. * More portable image url. * durationHumanize: support for milliseconds. * Sorter: support for custom sort. * Upgrade Ant Design to v4 (#5068) * Introduce Link component (#5122) * Introduce Link component * Use Link component for external links as well * Remove unused file (I hope it's really not needed) * Use Link component in visualizations library * Simplify Link component implementation * CR1 * Trigger build * CR2 * Support multiple queries in a single query box (#5058) * Support multiple queries in a single query box * Implement statement splitting function and add tests for it * Add a test for databricks-specific syntax * Split statements before running query * Add toggle to disable public URLs (#5140) * Add toggle to disable public URLs * Add Cypress tests * Antd v4: Fix CreateUserDialog (#5139) * Antd v4: Update CreateUserDialog * Add Cypress test for user creation * Misc frontend changes from internal fork (#5143) * Move CardsList to typescript (#5136) * Refactor CardsList - pass a suffix for list item Adding :id to an item to be used as a key suffix is redundant and the same can be accomplished by using :index from the map function. * Move CardsList to typescript * Convert CardsList component to functional component * CR1 * CR2 * Keep selected filters when switching visualizations (#5146) * getredash/redash#4944 Query pages: keep selected filters when switching visualizations * Pass current filters to expanded widget modal * prevent assigning queries to view_only data sources (#5152) * Add default limit (1000) to SQL queries (#5088) * add default limit 1000 * Add frontend changes and connect to backend * Fix query hash because of default limit * fix CircleCI test * adjust for comment * Allow to clear selected tags on list pages (#5142) * Convert TagsList to functional component * Convert TagsList to typescript * Allow to unselect all tags * Add title to Tags block and explicit "clear filter" button * Some tweaks * Keep additional URL params when forking a query (#5184) * Refresh CSRF tokens (#5177) * expire CSRF tokens after 6 hours * use axios' built-in cookie to header copy mechanism * add axios-auth-refresh * retry CSRF-related 400 errors by refreshing the cookie * export the auth refresh interceptor to support ejecting it if neccessary * reject the original request if it's unrelated to CSRF * add 'cancelled' meta directive to all cancelled jobs (#5187) * Ask user to log in when session expires (#5178) * Ask user to log in when session expires * Update implementation * Update implementation * Minor fix * Update modal * Do not intercept calls to api/session as Auth.requireSession() relies on it * Refine code; adjust popup size and position * Some Choropleth improvements/refactoring (#5186) * Directly map query results column to GeoJSON property * Use cache for geoJson requests * Don't handle bounds changes while loading geoJson data * Choropleth: fix map "jumping" on load; don't save bounds if user didn't edit them; refine code a bit * Improve cache * Optimize Japan Perfectures map (remove irrelevant GeoJson properties) * Improve getOptions for Choropleth; remove unused code * Fix test * Add US states map * Convert USA map to Albers projection * Allow to specify user-friendly field names for maps * Align Y axes at zero (#5053) * Align Y axes as zero * Fix typo (with @deecay) * Add alignYAxesAtZero function * Avoid 0 division Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Generate Code Coverage report for Cypress (#5137) * Move Cypress to dev dependencies (#3991) * Test Cypress on package list * Skip Puppeteer Chromium as well * Put back missing npm install on netlify.toml * Netlify: move env vars to build.environment * Remove cypress:install script * Update Cypress dockerfile * Copy package-lock.json to Cypress dockerfile * ScheduleDialog: Filter empty interval groups (#5196) * Share Embed Spec: Make sure query is executed (#5191) * Updated Cypress to v5.3 and fixed e2e tests (#5199) * Upgraded Cypress to v5.3 and fixed e2e tests * Updated cypress image * Fixed failing tests * Updated NODE_VERSION in netlify * Update client/cypress/integration/visualizations/choropleth_spec.js Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * fixed test in choropleth Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Extra actions on Queries and Dashboards pages (#5201) * Extra actions for Query View and Query Source pages * Convert Queries List page to functional component * Convert Dashboards List page to functional component * Extra actions for Query List page * Extra actions for Dashboard List page * Extra actions for Dashboard page * Pass some extra data to Dashboard.HeaderExtra component * CR1 * Remove build args from Cypress start script (#5203) * Frontend updates from internal fork (#5209) * Add horizontal bar chart (#5154) * added bar chart boilerplate * added x/y manipulation * replaced x/y management to inner series preparer * added tests * moved axis inversion to all charts series * removed line and area * inverted labels ui * removed normalizer check, simplified inverted axes check * finished working hbar * minor review * added conditional title to YAxis * generalized horizontal chart for line charts, resetted state on globalSeriesType change * fixed updates * fixed updates to layout * fixed minor issues * removed right Y axis when axes inverted * ran prettier * fixed updater function conflict and misuse of getOptions * renamed inverted to swapped * created mappingtypes for swapped columns * removed unused import * minor polishing * improved series behaviour in h-bar * minor fix * added basic filter to ChartTypeSelect * final setup of filtered chart types * Update viz-lib/src/components/visualizations/editor/createTabbedEditor.jsx * added proptypes and renamed ChartTypeSelect props * Add missing import * fixed import, moved result array to global scope * merged import * clearer naming in ChartTypeSelect * better lodash map syntax * fixed global modification * moved result inside useMemo Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Fix Home EmptyState help link (#5217) * Static SAML configuration and assertion encryption (#5175) * Change front-end and data model for SAML2 auth - static configuration * Add changes to use inline metadata. * add switch for static and dynamic SAML configurations * Fixed config of backend static/dynamic to match UI * add ability to encrypt/decrypt SAML assertions with pem and crt files. Upgraded to pysaml2 6.1.0 to mitigate signature mismatch during decryption * remove print debug statement * Use utility to find xmlsec binary for encryption, formatting saml_auth module * format SAML Javascript, revert want_signed_response to pre-PR value * pysaml2's entityid should point to the sp, not the idp * add logging for entityid for validation * use mustache_render instead of string formatting. put all static logic into static branch * move mustache template for inline saml metadata to the global level * Incorporate SAML type with Enabled setting * Update client/app/pages/settings/components/AuthSettings/SAMLSettings.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Chad Chen <chad.chen@databricks.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Fix dashboard background grid (#5238) * added required to Form.Item and Input for better UI (#5231) * added required to Form.Item and Input for better UI * removed required from input * Revert "removed required from input" This reverts commit b56cd76fa1b1eba4e337e55c2797b6a5d64f2699. * Redo "removed required from input" * removed typo Co-authored-by: rafawendel2010@gmail.com <rafawendel> * Fix annotation bug causing queries not to run - ORA-00933 (#5179) * Fix for the typo button in ParameterMappingInput (#5244) * extend the refresh_queries timeout from 3 minutes to 10 minutes (#5253) * Multiselect dropdown slowness (fix) (#5221) * created util to estimate reasonable width for dropdown * removed unused import * improved calculation of item percentile * added getItemOfPercentileLength to relevant spots * added getItemOfPercentileLength to relevant spots * Added missing import * created custom select element * added check for property path * removed uses of percentile util * gave up on getting element reference * finished testing Select component * removed unused imports * removed older uses of Option component * added canvas calculation * removed minWidth from Select * improved calculation * added fallbacks * added estimated offset * removed leftovers 😅 * replaced to percentiles to max value * switched to memo and renamed component * proper useMemo syntax * Update client/app/components/Select.tsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * created custom restrictive types * added quick const * fixed style * fixed generics * added pos absolute to fix percy * removed custom select from ParameterMappingInput * applied prettier * Revert "added pos absolute to fix percy" This reverts commit 4daf1d4bef9edf93cd9bb1f404bd022472ff17a2. * Pin Percy version to 0.24.3 * Update client/app/components/ParameterMappingInput.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * renamed Select.jsx to SelectWithVirtualScroll Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * bugfix: fix #5254 (#5255) Co-authored-by: Jerry <jerry.yuan@webweye.com> * Enable graceful shutdown of rq workers (#5214) * Enable graceful shutdown of rq workers * Use `exec` in the `worker` command of the entrypoint to propagate the `TERM` signal * Allow rq processes managed by supervisor to exit without restart on expected status codes * Allow supervisorctl to contact the running supervisor * Add a `shutdown_worker` command that will send `TERM` to all running worker processes and then sleep. This allows orchestration systems to initiate a graceful shutdown before sending `SIGTERM` to supervisord * Use Heroku worker as the BaseWorker This implements a graceful shutdown on SIGTERM, which simplifies external shutdown procedures. * Fix imports based upon review * Remove supervisorctl config * Enable Boxplot to be horizontal (#5262) * Frontend updates from internal fork (#5259) * DynamicComponent for QuerySourceAlerts * General Settings updates * Dynamic Date[Range] updates * EmptyState updates * Query and SchemaBrowser updates * Adjust page headers and add disablePublish * Policy updates * Separate Home FavoritesList component * Update FormatQuery * Autolimit frontend fixes * Misc updates * Keep registering of QuerySourceDropdown * Undo changes in DynamicComponent * Change sql-formatter package.json syntax * Allow opening help trigger in new tab * Don't run npm commands as root in Dockerfile * Cypress: Remove extra execute query * Correct cleanup_query_results comment (#5276) Correct comment from QUERY_RESULTS_MAX_AGE to QUERY_RESULTS_CLEANUP_MAX_AGE * Remove unwanted props from Select component (#5277) * Explicitly selected props so as to avoid errors from non-wanted props * Simplified approach * Ran prettier 😬 * Fixed minor issues * Fix QuerySourceDropdown value type (#5284) * Changed 'Delete Alert' into 'Delete' for consistency (#5287) * Redesign desktop nav bar (#5294) * Add React Fast Refresh + Hot Module Reloading (#5291) * removed leftover console.log (#5303) * Fix disabled hot reload flow (#5306) * Sync date format from settings with clientConfig (#5299) * added eslint no-console (#5305) * added eslint no-console * Update client/.eslintrc.js to allow warnings Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Convert viz-lib to TypeScript (#5310) Co-authored-by: ts-migrate <> * change item element in system status page (#5323) * Obfuscate non-email alert destinations (#5318) * Dropdown param search fix (#5304) * fixed QueryBasedParamterInput optionFilterProp * added optionFilterProp fallback for SelectWithVirtualScroll * simplified syntax * removed optionFilterProp from QueryBasedParameterInput.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * restricted SelectWithVirtualScroll props * Added e2e test for parameter filters * moved filter assertion to more suitable place * created helper for option filter prop assertion * moved option filter prop assertion to proper place, added result update assertion * refactor openAndSearchAntdDropdown helper * Fix parameter_spec Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Add Username and Password fields to MongoDB config (#5314) * docs: fix simple typo, possbily -> possibly (#5329) There is a small typo in redash/settings/__init__.py. Should read `possibly` rather than `possbily`. * Secret handling for Yandex, TreasureData, & Postgres/CockroachDB SSL (#5312) * Bar chart e2e test (#5279) * created bar-chart e2e test boilerplate * refactored assertions * added snapshots and dashboard * refactored assertions to properly deal with async * replaced loops with getters for proper workings of cypress * added a couple other bar charts * ran prettier * added a better query for bar charts * removed leftovers * moved helpers to support folder Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Truncate large Databricks ODBC result sizes (#5290) Truncates results sets that exceed a limit taken from an environment variable called DATABRICKS_ROW_LIMIT. * Add reorder to dashboard parameter widgets (#5267) * added paramOrder prop * minor refactor * moved logic to widget * Added paramOrder to widget API call * Update client/app/components/dashboards/dashboard-widget/VisualizationWidget.jsx Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Merge branch 'master' into reorder-dashboard-parameters * experimental removal of helper element * cleaner comment * Added dashboard global params logic * Added backend logic for dashboard options * Removed testing leftovers * removed appending sortable to parent component behavior * Revert "Added backend logic for dashboard options" This reverts commit 41ae2ce4755a6fa03fd76d900819b11016919275. * Re-structured backend options * removed temporary edits * Added dashboard/widget param reorder cypress tests * Separated edit and sorting permission * added options to public dashboard serializer * Removed undesirable events from drag * Bring back attaching sortable to its parent This reverts commit 163fb6fef5ecf7ec9924d5ff2dddcb4d889caab8. * Added prop to control draggable destination parent * Removed paramOrder fallback * WIP (for Netflify preview) * fixup! Added prop to control draggable destination parent * Better drag and drop styling and fix for the padding * Revert "WIP (for Netflify preview)" This reverts commit 433e11edc353b645410bac4bc162819ffd37d89a. * Improved dashboard parameter Cypress test * Standardized reorder styling * Changed dashboard param reorder to edit mode only * fixup! Improved dashboard parameter Cypress test * fixup! Improved dashboard parameter Cypress test * Fix for Cypress CI error Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> * Fix inconsistent Sankey behavior (#5286) * added type casting to coerce number string into nuber * Merge branch 'master' into fix-inconsistent=sankey-behavior * typed map viz options * Partially typed what was possible * reworked data coercion * improved MapOptionsType types * readaqueted sankey rows so as to allow strings again * Use legacy resolver in pip to fix broken build (#5309) Fixes #5300 and fixes #5307 There have been upstream (`python:37-slim` image) changes that bring in `pip` version 20.3.1, which makes new `2020-resolver` the default. Due to that, un-resolvable dependency conflicts in `requirements_all_ds.txt` now cause the build to fail. This is a workaround until the package versions can be updated to work with the new pip resolver. * Encrypt alert notification destinations (#5317) * Remove unnecessary space in rq log (#5345) * Fix: add a merge migration to solve multi head issue (#5364) * Add unit test to test for multi-head migrations issue * Add merge migration * Fix for Cypress flakiness generated by param_spec (#5349) * Bump dompurify from 2.0.8 to 2.0.17 in /viz-lib (#5326) Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.0.8 to 2.0.17. - [Release notes](https://github.com/cure53/DOMPurify/releases) - [Commits](https://github.com/cure53/DOMPurify/compare/2.0.8...2.0.17) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump bl from 1.2.2 to 1.2.3 in /viz-lib (#5257) Bumps [bl](https://github.com/rvagg/bl) from 1.2.2 to 1.2.3. - [Release notes](https://github.com/rvagg/bl/releases) - [Commits](https://github.com/rvagg/bl/compare/v1.2.2...v1.2.3) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump axios from 0.19.0 to 0.21.1 (#5366) Bumps [axios](https://github.com/axios/axios) from 0.19.0 to 0.21.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.0...v0.21.1) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Updated axios (#5371) * Increased waiting time to avoid flakiness (#5370) * Add My Dashboards filter option to the Dashboards list (#5375) * Add My Dashboards filter option to the Dashboards list. Added API endpoint to get the list of a user's dashboards, similar to the My Queries feature. * Update empty dashboard list state to show an invite to create a new dashboard, like My Queries * Update to Levko's suggested approach. Clean up some of the formatting for consistency. Put the 'My Queries/Dashboards' item before the Favorites since that organization seems cleaner to me. * Address Levko's comments * extend sync_user_details expiry (#5330) * Revert "Updated axios (#5371)" (#5385) This reverts commit 49536de1ed8331928cb6139d5aac2a2ebe780fc7. * Fix duplicate stylesheets (#5396) * Upgrade RQ to v1.5 (#5207) * upgrade RQ to v1.5 * set job's started_at * update healthcheck to match string worker names * delay worker healthcheck for 5 minutes from start to allow enough time to load in case many workers try to load simultaneously * log when worker cannot be found * Initial a11y improvements (#5408) * Fixed jsx-a11y problems * Changed tabIndex to type number * Initial improvements to DesktopNavbar accessibility * Added accessibility to favorites list * Improved accessibility in Desktop Navbar * Improvements in Desktop navbar semantics * Added aria roles to tags list * Fixed tabindex type * Improved aria labels in query control dropdown * Added tab for help trigger close button * Fixed typo * Improved accessibility in query selector * Changed resizable role to separator * Added label to empty state close button * Removed redundant and mistaken roles * Used semantic components * Removed tabIndex from anchor tags * Removed mistakenly set menuitem role from anchors * Removed tabIndex from Link components * Removed improper hidden aria label from icon * Reverted button and link roles in anchors for minimal merge conflicts * Replaced alt attr with aria-label for icons * Removed redundant menu role * Improved accessibility of CodeBlock * Removed improper role from schema browser * Reverted favorites list to div * Removed improper presentation role in query snippets * Tracked changes for further PR * Revert "Improved accessibility of CodeBlock" * Add aria-labelledby to the associated code labels This reverts commit 00a1685b1b37ad1ad5770880f9653dbd06d2cf3f. * Wrapped close icon into button * Add plain button (#5419) * Add plain button * Minor syntax improvements * Refactor of Link component (#5418) * Refactor of link component * Applied anchor-is-valid to Link component * Fixed Eslint error * Removed improper anchor uses * Fixed TS errors * Reset failure counter on adhoc success (#5394) * reset failure counter when query completes successfully via adhoc * Use "query_id" in metadata, but still allow "Query ID" for transition/legacy support * Add setting to identify email block domain (#5377) * Add setting to identify email block domain ref: #5368 * rename Co-authored-by: Levko Kravets <levko.ne@gmail.com> * rename and add comment Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Update redash/handlers/users.py Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Update redash/handlers/users.py Co-authored-by: Levko Kravets <levko.ne@gmail.com> * Add more comment to settting Co-authored-by: Levko Kravets <levko.ne@gmail.com> * feat: support Trino data-source (#5411) * feat: add trino logo * feat: add trino * Improve css and add focus styles (#5420) * Add styles for focused ant menus * Add disabled styles to clickable button * Improved dashboard header syntax and added focus * Improved CSS syntax * Add interactive styles * Improved anchor dependent styles * Improved styles of widget (gray more/delete btns) * Add interactive style for favorite star * Improved style of delete btn * Make table content fill all space * Added focus and active styles * Scoped query snippets list * Fixed behavior for all major browsers * Replaced button styles with plain button * Scoped items list styles * Added focus styles to ant table * Add plain button (#5419) * Minor syntax improvements * Refactor of Link component (#5418) * Improve icon a11y (#5424) * Added screen reader CSS * Added description to external links * Added spinner icon accessibility * Added accessibility to exclamation and big message * Added question and exclamation accessibility * Hide decorative icons * Standardized link design * Added a11y to refresh icons * Added aria-label to anchors and buttons * Added a11y to conditional icons * Added applicable labels to Ant Icons * Changed escape to interpolation * Replaced external links with opens in new tab * Improved Tooltip hosts * Added aria live to temporary elements * Removed mistakenly added redundant helper * Undoes unnecessarily added interpolation * Replaced empty label with hidden * Improved full icon label * Improved display of live regions * Added note * remove unused class * Created unique id * Remove TODOs * Proper action label * Improved feedback for autocomplete toggle * feature: add id hook * refactor: use id hook * standardize white space * Query Runner: eccenca Corporate Memory (SPARQL) - query RDF / Linked Data Knowledge Graphs with redash (#5415) * add Corporate Memory Runner based on cmempy 21.2.3 * fix code style * apply some code nice ups * use extendedEnum, boolean and extra_options for schema description * use lower case sorting for data source types list This correctly orders data source names which starts with lower chars (such as eccenca Corporate Memory) * add missing dblogo * Adds configuration for `<Tooltip>` trigger on focus (#5434) * refactor: add tooltip * refactor: replace imports * feature: add focus trigger * Add jsx/a11y eslint plugin (#5439) * build: install eslint jsx/a11y * chore: add ESlint rules for jsx/a11y * bug: add exceptions * Add live regions to tooltip (#5440) * feature: add live regions to tooltip * bug: treat null case * Improve input fields a11y (#5427) * Added labels to params * Added aria-label to inputs * Linked unsemantic label with input * Replaced span with label * refactor: improve labels for schema browsers * refactor: component accepts aria label * refactor: add labels to sidebar search inputs * Embed "external" link type into `<Link>` component (#5432) * feature: add external link * refactor: split external link into own component * refactor: added link with icon * refactor: remove reduntant tab index * refactor: simplify props * refactor: fix types * refactor: bring types and components together * refactor: improve treatment of target * Prepare viz-lib release with Antd v4 (#5443) * Get the user's current groups from props instead of useEffect(). (#5450) useEffect() doesn't run until _after_ the component renders. Before the hook runs, the value of `groups` === []. And this is passed to <DynamicForm>'s `initialValue` prop. The `initialValue` is not re-evaluated after useEffect() completes. So the users groups are never updated. This change pulls the user's current groups from `user` prop on the page. * Run prettier (#5436) * run in /client * run in /viz-lib * bug: fix wrong line ts expect error * bug: fixed search pattern for prettier * Fix Ace editor keyboard trap (#5451) * bug: fix a11y and add sr notification * refactor: improvements to sr notification * Fixes issue #5445: Scheduled query not working (#5448) * use 'query_id' everywhere instead of 'Query ID' * some black while we're at it Co-authored-by: Omer Lachish <omer@rauchy.net> * fix: rollback pip version to avoid legacy resolver problem (#5467) Co-authored-by: Lingkai Kong <lingkai.kong@databricks.com> * fix: treat possibly empty hrefs (#5468) * Replace `<a>` and `<button>` with `<PlainButton>` (#5433) * Add PlainButton * refactor close icons * reorder import * refactor remaining anchors * refactor: replace remaining <button> and TODOs * refactor: changed applicable elements to type link * fix: minor details * bug: fix tooltip ternary * refactor: improve interactivity and semantics of schema list item * Replace hardcoded ids with hook (#5444) * refactor: replace hardcoded ids with hook * refactor: replace hard coded ids with lodash id (class) * Query Runner: SPARQL Endpoint Data Source (#5469) * Athena: skip tables with no StorageDescriptor (#5447) * Adds rate limit to /forgot. (#5425) Security vulnerability was disclosed by Sohail Ahmed <https://www.linkedin.com/in/sohail-ahmed-755776184/> * use ptpython instead of standard python shell (#5483) * Expire sessions after 6 hours of inactivity (#5159) Configurable with environment variables * SFS-001: Adding support for the optional host connection property (#5490) * Fixing failure report rendering (#5492) * Use the correct rq connection in `get_queues_status` (#5491) * fix big_query.py google api import error (#5482) * Refine Dockerfile caching (#5484) * README.md: Add TiDB to the Supported Data Sources (#5477) * remove redundant fields from slack alert destination (#5514) * Excel & CSV query runner (#2478) * Excel query runner * Param handling for read_excel * CSV query runner * Fix wrong module name * Use yaml as query language * Use yaml as query language for CSV * Added icon and required modules * Local address filtering * Fix syntax error * Use Yarn instead of NPM (#5541) * Fix: log message for bad auth token was malformed (#5557) * Pin python3 image version (#5570) * Fix: Edit Source button disappeared for users without CanEdit perms (#5568) * Guard against empty totalProcessedBytes in BigQuery responses (#5592) * Guard against empty totalProcessedBytes in BigQuery responses This field will be empty on query responses for tables with row level access controls enabled. * Fix whitespace * Update redash/query_runner/big_query.py Co-authored-by: Jesse <jwhitehouse@airpost.net> * Fix: Specify the protobuf version (#5608) protobuf package with a dependency of google-api-python-client released a new version (3.18.0) on September 16, 2021. Since then, the Docker build is failing, and it is presumed that there is a conflict with other DataSource packages that use protobuf. (phoenixdb, pydgraph) * Add support for Firebolt Database (#5606) * Fixes issue #5622 (#5623) * Fix: pagination is broken on the dashboard list page (#5612) * Fix: pagination is broken on the dashboard list page (#5516) * Add test that reproduces issue #5466 * Fix: Duplicate dashboard rows were returned by Dashboard.all() (#5466) * Update changelog for V10 * Update changelog for #5516 * Bump master to 11.0.0-dev (#5631) * Typo(#5636) * Fix TypeScript warning: integet -> integer typo (#5637) * Update Readme to reflect Firebolt data source (#5649) * Speed up BigQuery schema fetching (#5632) New method improves schema fetching by as much as 98% on larger schemas * Merge pull request from GHSA-vhc7-w7r8-8m34 * WIP: break the flask_oauthlib behavior * Refactor google-oauth to use cryptographic state. * Clean up comments * Fix: tests didn't pass because of the scope issues. Moved outside the create_blueprint method because this does not depend on the Authlib object. * Apply Arik's fixes. Tests pass. * Merge pull request from GHSA-g8xr-f424-h2rv * Merge pull request from GHSA-fcpv-hgq6-87h7 * Update changelog to incorporate security fixes and #5632 & #5606 (#5654) * Update changelog to incorporate security fixes and #5632 & #5606 * Added reference to sqlite fix * Update CircleCI configs and move advocate to main requirements file (#5658) Ported from the 10.0.x branch * Improve BigQuery schema fetching when environment contains 50+ datasets (#5667) * Fix"Unable to locate package msodbcsql17"on M1 (#5638) If you run the docker-compose on a Mac with the new M1 chip, you will get the "Unable to locate package msodbcsql17" error. Because there are currently no msodbcsql17 packages for arm64 architecture. The solution was to change the base image in the Dockerfile to change the installation to the older AMD architecture. FROM --platform=linux/amd64 python:3.7-slim-buster * Fix: make plotly charts have unbounded hoverlabel name length (#5661) * SAML auth: allow custom service provider settings from environment variable (#5621) * Python query runner: add function that transforms pandas dataframe to result format (#5629) * Fix: auto limit breaks for Oracle queries (#5181) Moves auto limit primitives to the base SQL query runner * JSON query runner: optionally skip certificate verification (#5690) Add verify option to json datasource runner to allow query developers the option of skipping certificate verification Co-authored-by: Kevin Chiang <kchiang@tesla.com> Co-authored-by: kevinchiang <kevinchiang@outlook.com> * Fix: don't accept password login requests if password auth is disabled (#5693) * Firebolt Query Runner: now uses firebold-sdk python package (#5689) * Added firebolt-sdk in place of firebolt-sqlalchemy * fixed connection issue * fixed connection issue * final commit * Moved firebolt-sdk's imports to try block Co-authored-by: rajeshSigmoid <rajeshk@sigmoidanalytics.com> * Fix: Test Connection button disabled after save (#5666) Closes #5455 * Snowflake: add option to lowercase column names (#5657) Ported from app.redash.io codebase. * Add option to lowercase column names * Black the file * Multi-filters: show all results by default (#5676) * Move user profile image url into the users.details field (#5697) Makes the details field a JSONB field per pg doc recommendations. Update model.all() method to work properly now that profile_image_url is not an independent field. Closes #4469 * Fix: Dashboard List page crashes when sorting by name (#5645) Closes #5119 * List pages: move sidebar to the left (#5698) This change took place in steps: 1. Change order of content and sidebar. Sidebar appears first, then content. 2. Fix padding * Before: content was jutted against the sidebar. The sidebar was double- padded from the edge of the content area. After: Content has 15px pad against the sidebar. Sidebar has the same pad as the page title. 3. Don't pad the content on small screens. Otherwise the content appears off-center and doesn't use all of the available space. 4. Allow Create buttons to have varying width This makes the Query, Dashboard, and Alert list pages share the same style * Update Dockerfile CHOWN into COPY (#5660) Its more efficient to chown while COPY for large stacks of files as per https://github.com/docker/for-linux/issues/388 * Update contributor guidelines and clarify PR review process (#5714) * Fix hard-coding of amd64 platform, make ARM build work. (#5687) * Fix hard-coding of amd64 platform and make amd64 package installation conditional * Cleanup Dockerfile for best practices * Enable BuildKit for docker building * [Fix] Broken image included in emails (#5719) * Disable auto limit for mssql query runner (#5777) * Use correct names for Apache projects (#5776) Apache's trademark policy says to use the full name for these products on their first mention, on a page. * Fix: mongodb schema refresh failed when user had insufficient permissions (#5734) Co-authored-by: ban-lee-seng <banleesengpaints.marketing@gmail.com> * mysql: add more configuration options (#5280) * Remove unused params in query result GET handler (#5346) * Added clear button for query-based parameter inputs (#5710) * Add unarchive button to dashboard (#4697) Co-authored-by: Jesse Whitehouse <jesse@whitehouse.dev> * New Query Runner: Arango query runner (#5124) Co-authored-by: Hugo Gresse <hugo.gresse@gmail.com> * Sort Python safe built-ins (#5781) Co-authored-by: Jiajie Zhong <zhongjiajie955@hotmail.com> Co-authored-by: Jiajie Zhong <zhongjiajie955@gmail.com> * Feature: allow configuration / increase of gunicorn timeout (#5783) * New Query Runner: Netezza Performance Server (#5771) Co-authored-by: Jesse <jwhitehouse@airpost.net> * Clickhouse: Multi-statements support (#5792) ClickHouse query runner splits query into several and execute each query in turn. The result of the last execution is returned. Implementation uses ClickHouse sessions in the HTTP protocol. `session_id` is generated for the first query and then it is used with the subsequent queries (together with the `session_check` parameter). If query runner gets a success response with empty body from ClickHouse (for example, in case of temporary table creation request) query runner returns empty response. authored-by: Liubov Ulitina <ulitinalm@vl.ru> * README: update list of supported data sources (#5790) Co-authored-by: Jesse Whitehouse <jesse@whitehouse.dev> * New ElasticSearch Query Runner (#5794) - A runner supporting the newest versions of ES, aggregation, nested aggregations and nested fields. - A runner for the SQL OpenDistro flavor - A runner for the SQL X-Pack flavor Co-authored-by: Nicolas Le Manchet <nicolas@lemanchet.fr> Co-authored-by: wwl717195673 <717195673@qq.com> * README: add MariaDB to supported data sources (#5808) * Databricks ODBC Driver: follow redirects (#5814) Use curl --location * Fix typo in users.py (#5818) seperated -> separated * Adding Apache Pinot Query Runner (#5798) * Adding Apache Pinot integration * address comments * Microsoft Teams Webhook alert destination (#5691) * Microsoft Teams Webhook alert destination * Text formatting and new image for Microsoft Teams Webhook * Comment on how to build frontend * Add title to clarify webhook URL * Make the message into a configurable template. * Improve visibility of error message during schema retrieval (#5879) * handle query execution error in one place. increase ability to debug issues with schema retrieval * split message and details for error reporting Co-authored-by: Dmitriy Apollonin <dmitriy.apollonin@aspireiq.com> * fix: Support importlib_metadata v5.0.0 (#5840) * fix: Support importlib_metadata v5.0.0 importlib_metadata removed compatibility shims for deprecated entry point interfaces. see: https://github.com/python/importlib_metadata/blob/main/CHANGES.rst#v500 Filter result of entry_points function by group parameter. see: https://importlib-metadata.readthedocs.io/en/latest/api.html#importlib_metadata.entry_points * fix: Enable to run in older python version In circleci frontend-unit-tests, old node image is used and python 3.5 is used. Support both old version and latest version by checking ijmportlib_metadata version * bug fix SAML_LOGIN_ENABLED setting logic (#5784) * fix word spell (#5859) Co-authored-by: guyu <guyu@fordeal.com> * Update references from Discourse to Discussions. (#5916) * see https://discuss.redash.io/t/redash-datasource-connection-test-fails/9989 (#5898) * Remove extensions mechanism (#5895) * Remove extensions mechanism. * Missing change. * Add "set -e" to docker_build (#5896) * feat: New support databend for redash (#5902) * feat: New support databend for redash * fix * Update development workflow for Apple Silicon, Node version, default port, and maildev image (#5932) * Update ngines definition to allow for newer versions of Node. With Node version 19 I stumbled into some issues so for now bumped it to v16, until we get to updating the libraries we use. * docker-compose.yml updates: 1. Switch to newer maildev docker image. 2. Update local port to 5001 as 5000 seems to be used by a system process now. * Update pymssql and pyarrow. Also commented out ibm-db until we have a way to not install it only on ARM. * Fix group not found message. (#5935) * Fix/databend params (#5937) * fix: databend params * add databend logo * fix log * fix log * Update redash/query_runner/databend.py Co-authored-by: Arik Fraimovich <arik@arikfr.com> --------- Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Add liveness check for workers (#5886) * Add liveness check script for workers closes #5885 * delete extra script * Rename worker_healthcheck -> workers_healthcheck --------- Co-authored-by: Arik Fraimovich <arik@arikfr.com> * Bump mysqlclient from 1.3.14 to 2.1.1, memsql from 3.0.0 to 3.2.0, fixing MySQL multi statement support (#5957) * Extracting back-end: removed front-end code, unused scripts and workflows * Updated Python requirements, services and Docker build configuration * Renames LICENSE -> LICENSE.redash; added new README.md * Remove unised bin/* scripts; removed .restyled.yaml * Moved CHANGELOG.md to ./credits * Added LICENSE file; updated README.md * Cleaned up LICENSE and updated README.md * Cleaned up Alembic migrations history * Codebase updated for compatibility with up to date libraries; disabled changes tracking via ChangeTrackingMixin * Simplify the LICENSE for GitHub to detect it * Added pre-compiled CSS for login and other pages --------- Signed-off-by: koooge <koooooge@gmail.com> Co-authored-by: Omer Lachish <omer@rauchy.net> Co-authored-by: Levko Kravets <levko.ne@gmail.com> Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com> Co-authored-by: Daniel Lang <me@daniellang.net> Co-authored-by: Vladislav Denisov <denisov@sports.ru> Co-authored-by: Alex Kovar <ajkovar@gmail.com> Co-authored-by: Levko Kravets <kravets-levko@users.noreply.github.com> Co-authored-by: Lei Ni <65617553+leini-db@users.noreply.github.com> Co-authored-by: Arik Fraimovich <arik@arikfr.com> Co-authored-by: Jannis Leidel <jannis@leidel.info> Co-authored-by: simonschneider-db <44668299+simonschneider-db@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ben Amor <43776482+benamorbe@users.noreply.github.com> Co-authored-by: Tobias Macey <tmacey@boundlessnotions.com> Co-authored-by: koooge <koooooge@gmail.com> Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com> Co-authored-by: Restyled.io <commits@restyled.io> Co-authored-by: peterlee <yankeeguyu@gmail.com> Co-authored-by: max-voronov <70445727+max-voronov@users.noreply.github.com> Co-authored-by: Lingkai Kong <lingkai.kong@databricks.com> Co-authored-by: Alexander Rusanov <alexander.rusanov@gmail.com> Co-authored-by: Rafael Wendel <rafawendel2010@gmail.com> Co-authored-by: Christopher Grant <chrisgrant@lavabit.com> Co-authored-by: Chad Chen <chad.chen@databricks.com> Co-authored-by: Jonathan Hult <jonathan@jonathanhult.com> Co-authored-by: Jerry <610819267@qq.com> Co-authored-by: Jerry <jerry.yuan@webweye.com> Co-authored-by: Josh Bohde <josh@joshbohde.com> Co-authored-by: deecay <deecay@users.noreply.github.com> Co-authored-by: Jiajie Zhong <zhongjiajie955@hotmail.com> Co-authored-by: Elad Ossadon <elado7@gmail.com> Co-authored-by: Elad Ossadon <elad.ossadon@databricks.com> Co-authored-by: Patrick Yang <patrick.yang@databricks.com> Co-authored-by: Tim Gates <tim.gates@iress.com> Co-authored-by: Christopher Grant <christopher.grant@protonmail.com> Co-authored-by: Vipul Mathur <vipulmathur@users.noreply.github.com> Co-authored-by: Justin Talbot <76974990+justint-db@users.noreply.github.com> Co-authored-by: Đặng Minh Dũng <dungdm93@live.com> Co-authored-by: Sebastian Tramp <mail@sebastian.tramp.name> Co-authored-by: Jesse <jesse.whitehouse@databricks.com> Co-authored-by: Nolan Nichols <nnichols@mazetx.com> Co-authored-by: iwakiriK <balssearch0113@gmail.com> Co-authored-by: Ben Herzberg <69909379+BenSatori@users.noreply.github.com> Co-authored-by: adamzwakk <shamist@gmail.com> Co-authored-by: Jawshua <Jawshua@users.noreply.github.com> Co-authored-by: case-k-git <40357957+case-k-git@users.noreply.github.com> Co-authored-by: Omer Lachish <289488+rauchy@users.noreply.github.com> Co-authored-by: Shen Li <shenli3514@gmail.com> Co-authored-by: Kyunghwan Ko <64265107+kyunghwan1207@users.noreply.github.com> Co-authored-by: Tucker Leavitt <tucker.leavitt@gmail.com> Co-authored-by: Jesse <jwhitehouse@airpost.net> Co-authored-by: zoomdot <gninggoon@gmail.com> Co-authored-by: rajeshSigmoid <89909168+rajeshSigmoid@users.noreply.github.com> Co-authored-by: Aratrik Pal <44343120+AP2008@users.noreply.github.com> Co-authored-by: Dan Goldin <dangoldin@gmail.com> Co-authored-by: rajeshmauryasde <rajeshk@sigmoidanalytics.com> Co-authored-by: Katsuya Shimabukuro <katsu.generation.888@gmail.com> Co-authored-by: Katsuya Shimabukuro <katsuya-shimabukuro@freee.co.jp> Co-authored-by: Robin Zheng <zhengr@msn.com> Co-authored-by: Steven Hao <stevenhao@users.noreply.github.com> Co-authored-by: be30c9 <92396435+be30c9@users.noreply.github.com> Co-authored-by: Tin C <tim5go@gmail.com> Co-authored-by: Kevin Chiang <kchiang@tesla.com> Co-authored-by: kevinchiang <kevinchiang@outlook.com> Co-authored-by: anshulhiran <89910231+anshulhiran@users.noreply.github.com> Co-authored-by: JyothiGandi <JyothiGandi@users.noreply.github.com> Co-authored-by: Bruno Agutoli <bruno@propelleraero.com.au> Co-authored-by: adamzwakk <adam@adamzwakk.com> Co-authored-by: Jesse <jesse@whitehouse.dev> Co-authored-by: Gabriel A. Devenyi <gdevenyi@gmail.com> Co-authored-by: Ian <68525743+decaffeinatedio@users.noreply.github.com> Co-authored-by: Greg Stein <gstein@gmail.com> Co-authored-by: Leandro Lorenzini <leandro@outlook.sg> Co-authored-by: ban-lee-seng <banleesengpaints.marketing@gmail.com> Co-authored-by: Bryan Yang <kenshin2004528@gmail.com> Co-authored-by: Hugo Gresse <hugo.gresse@gmail.com> Co-authored-by: Jiajie Zhong <zhongjiajie955@gmail.com> Co-authored-by: Jacek Jabłoński <35669512+jacek-jablonski@users.noreply.github.com> Co-authored-by: Aniket Kulkarni <aniket-s-kulkarni@users.noreply.github.com> Co-authored-by: Nicolas Le Manchet <nicolas@lemanchet.fr> Co-authored-by: wwl717195673 <717195673@qq.com> Co-authored-by: luc-x41 <45362069+luc-x41@users.noreply.github.com> Co-authored-by: trigremm <askhat.molkenov@gmail.com> Co-authored-by: Ikko Ashimine <eltociear@gmail.com> Co-authored-by: Xiang Fu <xiangfu.1024@gmail.com> Co-authored-by: Dmitriy <apollonin@gmail.com> Co-authored-by: Dmitriy Apollonin <dmitriy.apollonin@aspireiq.com> Co-authored-by: tsbkw <s-tsubokawa@mercari.com> Co-authored-by: Izumu KUSUNOKI <izumu.kusunoki@gmail.com> Co-authored-by: guyu <guyu@fordeal.com> Co-authored-by: Zach Liu <zachliu@users.noreply.github.com> Co-authored-by: Genki Sugawara <sugawara@winebarrel.jp> Co-authored-by: Jeremy <hantmac@outlook.com> Co-authored-by: David Choi <themars@gmail.com> Co-authored-by: Shubham Jain <shubhrjain7@gmail.com> Co-authored-by: myonlylonely <myonlylonely@users.noreply.github.com>
- configure uv by environment to avoid need to specify params on each invocation - update list of apt packages - initialize vevn on start - avoid using chown for venv as it is performance nightmare because of docker/for-linux#388
Expected behavior
I want to build an image with simple wordpress and theme installation (with nginx, mysql and so on).
Actual behavior
I am building an image with WordPress and own templates. In order for everything to work correctly, I need to set
chown www-data:www-data /var/www/html/ -R
. Unfortunately this takes long time, at least 5 minutes most of the time.Steps to reproduce the behavior
This is where this hangs for at least 5+ minutes.
Output of
docker version
:Output of
docker info
:Additional environment details (AWS, VirtualBox, physical, etc.)
None, running on a fresh ubuntu machine.
The text was updated successfully, but these errors were encountered: