Skip to content
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

Open
2 tasks done
katsar0v opened this issue Aug 7, 2018 · 92 comments
Open
2 tasks done

Recursive chown is really slow #388

katsar0v opened this issue Aug 7, 2018 · 92 comments

Comments

@katsar0v
Copy link

katsar0v commented Aug 7, 2018

  • This is a bug report
  • [] This is a feature request
  • I searched existing issues before opening this one (found similar issue, which was closed, but the problem still persist with me)

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

Step 91/95 : WORKDIR /var/www/html/
 ---> Running in 3bbf283b7604
Removing intermediate container 3bbf283b7604
 ---> abe7aa3891b3
Step 92/95 : RUN chown www-data:www-data . -R

This is where this hangs for at least 5+ minutes.

Output of docker version:

Docker version 18.06.0-ce, build 0ffa825

Output of docker info:

Containers: 6
 Running: 6
 Paused: 0
 Stopped: 0
Images: 2246
Server Version: 18.06.0-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: d64c661f1d51c48782c9cec8fda7604785f93587
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.13.0-46-generic
Operating System: Ubuntu 17.10
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.688GiB
Name: katsarov-ThinkPad-T470s
ID: R5S6:67UI:QUZK:YBZS:VXLQ:YEFK:SEGU:7EAO:WTUZ:63R5:V3UX:NEJT
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: No swap limit support

Additional environment details (AWS, VirtualBox, physical, etc.)

None, running on a fresh ubuntu machine.

@cpuguy83
Copy link
Collaborator

cpuguy83 commented Aug 7, 2018

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)

@katsar0v
Copy link
Author

Hi, thank for your reply. I will try the --chown flag. The chown is executed on a wordpress installation (not big, but many files). But what if the files come from git, not from host machine?

@ZelphirKaltstahl
Copy link

ZelphirKaltstahl commented Aug 14, 2018

I noticed the --chown COPY argument does not seem to support variables defined inside the Dockerfile. I presume it is because those are only defined at build time?

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?

@Grant1219
Copy link

Grant1219 commented Sep 17, 2018

I also started running into the issue today while debugging a container that is running chown -R over about 40k files and about 400MB of files. It takes roughly 12 minutes to complete.

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 18.03.1-ce.

EDIT:
After more digging, I discovered the underlying storage driver changed from "aufs" to "overlay2" so I believe the slowdown must be because of that change.

@cpuguy83
Copy link
Collaborator

The good news, in the new kernel overlay does a meta-data only copy for this instead of copying the whole file.

@Grant1219
Copy link

@cpuguy83 Which version will that be included in?

@cpuguy83
Copy link
Collaborator

@Grant1219 Looks like 4.19 -- https://cateee.net/lkddb/web-lkddb/OVERLAY_FS_METACOPY.html
You can set the default as a kernel config as well as set a mount option.

@katsar0v
Copy link
Author

Does switching to a newer kernel really help in this case?

@cpuguy83
Copy link
Collaborator

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.

@cpuguy83
Copy link
Collaborator

The smaller the sizes and greater number of files the less effective it would be, I suspect.
But I don't see how chown could improve beyond that change.

@kavehv
Copy link

kavehv commented Sep 21, 2018

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.

@katsar0v
Copy link
Author

Okay, this seems to be real issue and not a small one. @kavehv you say it gets worse on 18.04, can you also compare the kernel versions?

@kavehv
Copy link

kavehv commented Sep 22, 2018

14.04:

$ docker info
Containers: 3
 Running: 0
 Paused: 0
 Stopped: 3
Images: 147
Server Version: 18.06.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 apparmor
Kernel Version: 4.4.0-79-generic
Operating System: Ubuntu 14.04.5 LTS
OSType: linux
Architecture: x86_64
CPUs: 12
Total Memory: 10.35GiB
Name: kaveh-ubuntu
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: No swap limit support

18.04:

$ docker info
Containers: 2
 Running: 2
 Paused: 0
 Stopped: 0
Images: 33
Server Version: 18.06.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.15.0-34-generic
Operating System: Ubuntu 18.04.1 LTS
OSType: linux
Architecture: x86_64
CPUs: 12
Total Memory: 10.47GiB
Name: kaveh-ubuntu
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: No swap limit support

@kavehv
Copy link

kavehv commented Sep 24, 2018

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?

@cpuguy83
Copy link
Collaborator

Probably best to report to Canonical in this case.

@kavehv
Copy link

kavehv commented Sep 24, 2018

FWIW, the same thing appears to happen on 16.04 as well (similar 4.15 kernel version):

$ docker info
Containers: 2
 Running: 2
 Paused: 0
 Stopped: 0
Images: 2
Server Version: 18.06.1-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.15.0-29-generic
Operating System: Ubuntu 16.04.5 LTS
OSType: linux
Architecture: x86_64
CPUs: 12
Total Memory: 9.442GiB
Name: kaveh-ubuntu
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

WARNING: No swap limit support

Is it ubuntu or the kernel? Does someone more familiar with docker-ce need to file a bug?

@kavehv
Copy link

kavehv commented Sep 24, 2018

Also, modifying /etc/docker/daemon.json to specify devicemapper as your storage driver (with an appropriate base size if necessary) seems to be the way we'll have to work around this issue. It reduces this operation from 3 minutes back down to about 3 seconds.

@Grant1219
Copy link

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.

@kavehv
Copy link

kavehv commented Sep 26, 2018

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?
https://askubuntu.com/questions/784442/why-does-ubuntu-16-04-set-all-drive-io-schedulers-to-deadline

@katsar0v
Copy link
Author

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?

@katsar0v
Copy link
Author

Here is a full Dockerfile example (with WordPress plugins) for testing the chmod performance:

FROM ubuntu
RUN apt-get update && apt-get install -y wget unzip
############
# ENV VARS #
############
ARG DEBIAN_FRONTEND="noninteractive"
ENV SHELL /bin/bash
# user and group
ENV NON_PRIVILEGED_USER="test"
ARG NON_PRIVILEGED_USER_PASSWORD="test"
ENV NON_PRIVILEGED_USER_GROUP="test"

#################
# ADDING A USER #
#################
# For more info please check useradd --help or man useradd.
RUN groupadd -r $NON_PRIVILEGED_USER_GROUP -g 1000 \
 && useradd \
    --uid 1000 \
    --system \
    --gid $NON_PRIVILEGED_USER_GROUP \
    --create-home \
    --home-dir /home/$NON_PRIVILEGED_USER/ \
    --shell /bin/bash \
    --comment "non-privileged user" \
    $NON_PRIVILEGED_USER \
 && chmod 755 /home/$NON_PRIVILEGED_USER/ \
 && echo "$NON_PRIVILEGED_USER:$NON_PRIVILEGED_USER_PASSWORD" | chpasswd

RUN mkdir /tmp/fold1/
WORKDIR /tmp/fold1/
ARG MAILPOET_DOWNLOAD_URL="https://downloads.wordpress.org/plugin/mailpoet.3.11.0.zip"
ARG USER_ROLE_EDITOR_DOWNLOAD_URL="https://downloads.wordpress.org/plugin/user-role-editor.4.46.zip"
ARG CMS_PAGE_TREE_VIEW_DOWNLOAD_URL="https://downloads.wordpress.org/plugin/cms-tree-page-view.1.5.zip"
RUN wget --output-document mailpoet.zip --quiet ${MAILPOET_DOWNLOAD_URL} && \
    wget --output-document user_role_editor.zip --quiet ${USER_ROLE_EDITOR_DOWNLOAD_URL} && \
    wget --output-document cms_tree_view.zip --quiet ${CMS_PAGE_TREE_VIEW_DOWNLOAD_URL} && \
    unzip mailpoet.zip && rm mailpoet.zip && \
    unzip user_role_editor.zip && rm user_role_editor.zip && \
    unzip cms_tree_view.zip && rm cms_tree_view.zip
RUN chown test:test . -R
CMD ["bash"]

@OhMyMndy
Copy link

OhMyMndy commented Oct 9, 2018

This problem does not only occur on Ubuntu 18.04, I have the same problem on Fedora 28.
Changing IO scheduler to cfq or deadline did nothing for me.

System information:
/var/lib/docker is on a separate partition (ext4 7200RPM disk)
Kernel 4.17.19-200.fc28.x86_64
Docker version 18.06.1-ce, build e68fc7a
Storage driver overlay2 on extfs

Minimal test Dockerfile with Centos
The Symfony repository is 177MB when cloned
it takes over 4 minutes to chown on overlay2
it takes over 0.5 seconds to chown on devicemapper

FROM centos:latest
RUN yum install git -y
RUN useradd -m test
RUN cd /home/test && git clone https://github.com/symfony/symfony.git
RUN time chown -R test:test /home/test

@jpic
Copy link

jpic commented Oct 10, 2018

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.

@katsar0v
Copy link
Author

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.

@cpuguy83
Copy link
Collaborator

cpuguy83 commented Oct 15, 2018 via email

@KernelMadness
Copy link

Experiencing the same slowdown in 18.04(kernel 4.15) vs 16.04(kernel 4.4).
4.4 is a way faster, like 5-10 times

@jpic
Copy link

jpic commented Oct 16, 2018

This only improves partially the performance.

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 ;)

@katsar0v
Copy link
Author

katsar0v commented Oct 17, 2018

This only improves partially the performance.

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.
chown in a RUN command takes approx. up to 2 minutes for a big directory with many files. When copying with --chown it takes about ~10-30 seconds which is really better but still not comparable to 0.001 seconds (benchmark on host machine)

@cpuguy83
Copy link
Collaborator

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 COPY --chown taking a long time, we should look at the cause of this. There will be some overhead here just because we are copying to overlayfs, but 10-30s compared to sub-second seems a bit wrong. How large is this copy? How many files? How long does it take if you use DOCKER_BUILDKIT=1 docker build <args> with an experimental docker daemon enabled?

Without buildkit, I believe COPY creates a tar of the items to be copied and untars at the destination... this could be part of the overhead but hard to say without some comparisons.

@kavehv
Copy link

kavehv commented Oct 17, 2018

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 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.

@scalavision
Copy link

I can also confirm this, simple chown of some dirs, takes at least 15 mins.

@theamanbhargava
Copy link

Any new about this? I have my builds stuck for 20 minutes just because of this issue, it worth mentioning that we are using docker-in-docker for our build

Instead:
COPY /src /dest
RUN chown user /dest
Use:
COPY --chown=user:group /src /dest

This solved my issue, thanks @Belanchuk

Does this work with env vars?

Yes it does for me

@ap-wtioit
Copy link

ap-wtioit commented Oct 18, 2021

This issue not only affects chown (can be workarrounded with COPY --chown=) but also chmod for which no workarround exists (AFAIK).

@theamanbhargava
Copy link

theamanbhargava commented Oct 18, 2021 via email

tmszi added a commit to auto-mat/prahounakole that referenced this issue Nov 1, 2021
adamzwakk added a commit to adamzwakk/redash that referenced this issue Nov 28, 2021
More efficient to chown while COPY for large stacks of files as per docker/for-linux#388
@Pi-George
Copy link

Sending build context to Docker daemon  3.533GB
Step 1/4 : ARG FROM
 --->
Step 2/4 : FROM $FROM as production
 ---> ed6e6e960cc6
Step 3/4 : COPY ./ /srv/www/
 ---> 6f7b55f10623
Step 4/4 : RUN chown -R root:root /srv/www/
 ---> Running in 1c26e11d5632

I gave it two hours and it still hasn't finished

@benken-parasoft
Copy link

benken-parasoft commented Feb 1, 2022

Before running chown -R, I temporarily replace /var/log/lastlog and /var/log/faillog with symlinks to /dev/null. I believe this has to do with how docker handles sparse files. This solves the problem for me but wondering if anyone has a better workaround.

@Pi-George
Copy link

Using --chown on the COPY command solved it for me

@ZelphirKaltstahl
Copy link

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.

@cpuguy83
Copy link
Collaborator

cpuguy83 commented Feb 2, 2022

@ZelphirKaltstahl

The newest Dockerfile parser handles variables on flags.

FROM busybox
ENV THE_USER=nobody
COPY --chown=${THE_USER} foo /foo
RUN ls -lh /foo
docker buildx build --no-cache --progress=plain /tmp/test                                                                                    
WARN[0000] No output specified for docker-container driver. Build result will only remain in the build cache. To push result image into registry use --push or to load image into docker use --load 
#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 121B done
#1 DONE 0.0s

#2 [internal] load .dockerignore
#2 transferring context: 2B done
#2 DONE 0.0s

#3 [internal] load metadata for docker.io/library/busybox:latest
#3 DONE 0.4s

#4 [1/3] FROM docker.io/library/busybox@sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678
#4 resolve docker.io/library/busybox@sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678 0.0s done
#4 CACHED

#5 [internal] load build context
#5 transferring context: 22B done
#5 DONE 0.0s

#6 [2/3] COPY --chown=nobody foo /foo
#6 DONE 0.0s

#7 [3/3] RUN ls -lh /foo
#7 0.115 -rw-rw-r--    1 nobody   nobody         0 Feb  2 23:31 /foo
#7 DONE 0.1s
``

@benken-parasoft
Copy link

In my case, I just need to run chown -R on a directory from a base image. I'm not copying anything and therefore wouldn't be running COPY --chown, right?

susodapop pushed a commit to getredash/redash that referenced this issue Mar 2, 2022
Its more efficient to chown while COPY for large stacks of files as per docker/for-linux#388
@andorfermichael
Copy link

still no solution here?

@jessesimpson36
Copy link

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 COPY --chown instead of chmod -R, which some people may not be able to apply to their own situation. Also perhaps changing the docker daemon's configuration for the type of filesystem used.

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.

@NoamNol
Copy link

NoamNol commented May 29, 2022

Yes COPY --chown is much faster for me, and to reduce space I use it with multi-stage builds.

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"]

@sebastianvitterso
Copy link

I had the problem of RUN chown -r user /app taking a while (too long for me to bother waiting). The issue turned out to be that my node_modules folder was being copied and attempted chowned, which was completely unnecessary.

The fix: Add a .dockerignore like:

node_modules

rudyryk added a commit to Dingolytics/dingolytics that referenced this issue Apr 17, 2023
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…
rudyryk added a commit to Dingolytics/dingolytics that referenced this issue Apr 17, 2023
* 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>
rudyryk added a commit to Dingolytics/dingolytics that referenced this issue Apr 17, 2023
* 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>
rudyryk added a commit to Dingolytics/dingolytics-backend that referenced this issue Nov 25, 2023
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests