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

typescript v2.1.4 doesn't like empty files in config #405

Closed
danfuzz opened this issue Dec 7, 2016 · 34 comments
Closed

typescript v2.1.4 doesn't like empty files in config #405

danfuzz opened this issue Dec 7, 2016 · 34 comments

Comments

@danfuzz
Copy link

danfuzz commented Dec 7, 2016

Line 49 of config.ts runs afoul of the tsconfig checker in v2.1.4 of the TypeScript compiler:

        configFile = {
            config: {
                compilerOptions: {},
                files: [], // <-------------- THIS LINE
            },
        };

https://github.com/TypeStrong/ts-loader/blob/master/src/config.ts#L49

In my project (https://github.com/danfuzz/quillex), I'm getting the error "error TS18002: The 'files' list in config file 'tsconfig.json' is empty." which I've tracked back to this. (Note: I currently work around this by pointing my project at an older version of typescript.)

If I add a dummy entry to the files list, then typescript stops complaining, and things seem to work as expected, e.g.:

        configFile = {
            config: {
                compilerOptions: {},
                files: ['i-really-hope-you-dont-have-a-file-with-this-name'],
            },
        };

I don't know if this is the best solution to the problem, nor if it causes some other problem that I just haven't noticed yet. For the record, totally removing the files binding causes a different error ("error TS18003: No inputs were found in config file 'tsconfig.json'. Specified 'include' paths were '["**/*"]' and 'exclude' paths were '["node_modules","bower_components","jspm_packages"]'.").

typescript has an explicit error code and message for a specified-but-empty files list, so I'm guessing the change in behavior is intentional.

@danfuzz
Copy link
Author

danfuzz commented Dec 8, 2016

Here's the salient part of the stacktrace where the error is thrown:

    at getFileNames (.../node_modules/typescript/lib/typescript.js:64355:41)
    at Object.parseJsonConfigFileContent (.../node_modules/typescript/lib/typescript.js:64304:18)
    at Object.getConfigParseResult (.../node_modules/ts-loader/dist/config.js:70:38)
    at Object.ensureTypeScriptInstance (.../node_modules/ts-loader/dist/instances.js:33:36)
    at Object.loader (.../node_modules/ts-loader/dist/index.js:17:24)

@johnnyreilly
Copy link
Member

Hi @danfuzz,

Thanks for posting details of your workaround. That's interesting. That said; there's nothing really that we can usefully do about this - this is the behaviour of the TypeScript compiler as intended (and this is intended - raised an issue with team and had it confirmed)

@danfuzz
Copy link
Author

danfuzz commented Dec 8, 2016

I assume "nothing to do about this" doesn't actually mean that ts-loader will be left broken forever. Is my — admittedly gross — hack pretty much the best that can be done?

@johnnyreilly
Copy link
Member

@johnnyreilly
Copy link
Member

Well you can stay on TypeScript 2.0 but yes that's pretty much it I'm afraid. Ts-loader works on top of TypeScript and we don't intend to implement different behaviour than the compiler for the most part

@johnnyreilly
Copy link
Member

(not because we want to be difficult but that way pain lies - if not immediately then soon)

@danfuzz
Copy link
Author

danfuzz commented Dec 8, 2016

(Yeah I get that. I'm not interested in pegging the project to an old version of the compiler.)

I think I'm confused, then. I don't think I'm using ts-loader in an unusual way; that is, I don't get what I'm doing that's different than other users of ts-loader. Like, what should I be doing differently if I want to use TS 2.1?

FWIW, here's where I config ts-loader in my code: https://github.com/danfuzz/quillex/blob/master/server/ClientBundle.js#L93

@danfuzz
Copy link
Author

danfuzz commented Dec 8, 2016

In any case, thanks for the replies and the info.

@johnnyreilly
Copy link
Member

No problem. For what it's worth it's totally normal to not specify files at all. See this example: https://github.com/johnnyreilly/proverb-signalr-react/blob/master/tsconfig.json

@danfuzz
Copy link
Author

danfuzz commented Dec 8, 2016

Just as a coda on this: I figured out what the salient difference is between my situation and other projects'. I'd be surprised if I'm the only one who runs into this, so if nothing else the following can serve as a heads-up.

My project is using TS because it includes the module parchment https://github.com/quilljs/parchment, which is written in TS. Parchment is distributed via npm as a prebuilt JS bundle (built using Webpack) and also includes the original .ts files, but it doesn't include a tsconfig.json file in the npm package. I'm choosing to compile the .ts files (and not use the bundle) because I don't want to have a double layer of Webpack loaders (that is, I'm making my own unified bundle of all the client code). That's why I'm using ts-loader.

So, what ts-loader is getting pointed at is a .ts file which doesn't have a tsconfig.json anywhere around it. This means the getConfigFile() call in ts-loader/config.ts ends up falling through and returning that default one with an empty files list. And it looks to me like any time that that happens, the subsequent attempt to run compilation will fail.

What I can do to work around the problem is add a new tsconfig.json file as a peer to the node_modules directory where parchment lands. (I could also drop one in the parchment directory, but if I do that, I'd no longer be using a pristine package from the npm registry.)

@johnnyreilly
Copy link
Member

FWIW - it's not advised to ship TS in node_modules - ts-loader actually warns about this now: #399

@danfuzz
Copy link
Author

danfuzz commented Dec 8, 2016

Huh, well that's a bummer too, because ideally I'd love to keep referring to parchment via npm and not have to e.g. pull in its git repo.

@danfuzz
Copy link
Author

danfuzz commented Dec 8, 2016

Actually it's even worse: I don't use parchment directly. I use it because it's a dependency of quill (which isn't written in TS). So, if I have to stop getting Parchment from npm I also have to stop getting Quill from npm (or hand-patch its dependencies somehow).

@danfuzz
Copy link
Author

danfuzz commented Dec 8, 2016

I'm saying the above by way of advocacy: I actively like the fact that Parchment gives me a choice of whether or not to use the TS source, while still using npm.

@johnnyreilly
Copy link
Member

The context can found here btw: microsoft/TypeScript#12358

kittaakos added a commit to TypeFox/sadl-jupyterlab that referenced this issue Dec 14, 2016
@m1neral
Copy link

m1neral commented Jan 18, 2017

I got same error "error TS18002: The 'files' list in config file 'tsconfig.json' is empty.", but then I moved ts: {} section into tsconfig.json, build slowed in 4 times!

@xtianus79
Copy link

@johnnyreilly this is an issue and very unclear as to what is going on. Why is this closed?

@m1neral
Copy link

m1neral commented Feb 3, 2017

@xtianus79 Move your ts property in the tsconfig.json file. Do not forget add rule that typechecker scan only the files you want (bundled files): enough add your webpack entry point (or one of them) to includes or files or use the hack exclude: '*'. Good luck.

@xtianus79
Copy link

@m1neral what do you mean exactly move the ts: {} into tsconfig.json ???

@aindlq
Copy link

aindlq commented May 25, 2017

I've just stumbled into this error as well, and reason was actually quite different. I passed full path to configFileName property, but it actually takes a name of the file. ts-loader applies tsconfig search logic similar to tsc. Funny thing that it worked quite well on linux and mac, but failed on windows.

@xtianus79
Copy link

for me, with Upgrading to Angular 4 fixed the issue.

@himStone
Copy link

@aindlq

any solution? My problem seems to be same as yours. only Windows failed

@aindlq
Copy link

aindlq commented Jul 18, 2017

@bccsafe the solution for me was to not pass configFileName at all, if it is named tsconfig.json plugin will find it

@only-cliches
Copy link

Just ran into this issue and found a solution.

My loaders section in webpack looked like this:

        loaders: [{
                test: /\.ts$|\.tsx$/,
                loader: 'ts-loader',
                options: {
                    configFile: "./tsconfig.server.json"
                }
            },
            {
                test: /\.ejs$/,
                loader: 'ejs-loader'
            }
        ]

Turns out the ./ in the path to the configFile was the issue.

The correct config looks like this:

        loaders: [{
                test: /\.ts$|\.tsx$/,
                loader: 'ts-loader',
                options: {
                    configFile: "tsconfig.server.json"
                }
            },
            {
                test: /\.ejs$/,
                loader: 'ejs-loader'
            }
        ]

@johnnyreilly
Copy link
Member

Thanks for sharing!

@gonzofish
Copy link

@ClickSimply thank you for saving me hours of heartache!

@univerio
Copy link
Contributor

I ran into the same, but in my case my tsconfig.json was in a different directory than the project root, so while a relative path doesn't work:

{
  test: /\.tsx?$/,
  loader: "ts-loader",
  options: {
    configFile: "./foo/tsconfig.json"
  }
}

an absolute path works just fine:

{
  test: /\.tsx?$/,
  loader: "ts-loader",
  options: {
    configFile: path.resolve(__dirname, "foo", "tsconfig.json")
  }
}

@danfuzz
Copy link
Author

danfuzz commented Jun 26, 2018

BTW the underlying TS issue was just closed as "fixed," and looks like it will be released with TS 3.0: microsoft/TypeScript#12762 (comment)

@a-x-
Copy link

a-x- commented May 15, 2020

I even had a typo in config file name.

Please, make this error more informative!
Really, what the files, if config file even does not exist.

simonschneider-db added a commit to simonschneider-db/redash that referenced this issue Jul 6, 2020
…rror while parsing tsconfig.json, The 'files' list in config file 'tsconfig.json' is empty`

See (TypeStrong/ts-loader#405 (comment))
@Volmarg
Copy link

Volmarg commented Jul 12, 2020

So i had the same issue, but actually non of the solutions were working. Spent couple hours on fixing it.
So my case:

Symfony 4.4 + Webpack-encore

  1. Install ts-loader: npm install --save-dev ts-loader@3.5.0
  2. Create tsconfig.json in the same dir where webpack.config.js is. In my case root ./
  3. Add in webpack.config.js
Encore
    <other stuff>
    .enableTypeScriptLoader(function (typeScriptConfigOptions) {
        typeScriptConfigOptions.transpileOnly = true;
        typeScriptConfigOptions.configFile    = 'tsconfig.json';
    })
  1. Add in tsconfig.js
{
  "compilerOptions": {
    "target": "es5"
  },
  "include": [
    "src/assets/scripts/validators/forms.ts"
  ],
  "exclude": []
}

On the moment of writing this i only know how to include single files, there must be way to add scan of dir but for now it's ok`

Tip

  • some ppl recommend to change the entry file to .ts, but .js is working also for me
Encore
    .addEntry('app', './src/app.js')

arikfr pushed a commit to getredash/redash that referenced this issue Jul 16, 2020
* 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 (TypeStrong/ts-loader#405 (comment))

* 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
@newdaveespionage
Copy link

I've just stumbled into this error as well, and reason was actually quite different. I passed full path to configFileName property, but it actually takes a name of the file. ts-loader applies tsconfig search logic similar to tsc. Funny thing that it worked quite well on linux and mac, but failed on windows.

Eons ago now, but this was the issue I encountered, difference being that I had in my webpack.config.js

            options: {
              configFile: './tsconfig.build.json',
            },

When what ts-loader wanted was

            options: {
              configFile: 'tsconfig.build.json',
            },

@joshverd
Copy link

joshverd commented Sep 16, 2020

I fixed this issue by adding __dirname before the config file's name:

        options: {
          configFile: __dirname + '/src/react.tsconfig.json',
        },

andrewdever pushed a commit to andrewdever/redash that referenced this issue Oct 5, 2020
* 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 (TypeStrong/ts-loader#405 (comment))

* 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
@lpender
Copy link

lpender commented Apr 8, 2021

I ultimately solved this only by upgrading to webpack 5

@JeukHwang
Copy link

In my case,
webpack configuration file was in [project directory]/config/dist.webpack.cjs and
typescript configuration file was in [project directory]/config/dist.tsconfig.json.
The following code was working for me.

{
            test: /\.tsx?$/,
            use: [{
                loader: "ts-loader",
                options: { configFile: "config/dist.tsconfig.json" },
            }],
            exclude: /node_modules/,
}

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