* Update queries.latest_query_data on save
* Add wait on test as loading query and query results may re-render DOM and that makes test fraky
* Fix styling report by prettier
This prevents duplicate entries in the schema list. Materialized views are the
only table-like object not found information_schema. Also ensure that the schema
and table found in information_schema is accessible by the current user.
* Use 12-column layout for dashboard grid
Set minSizeX, minSizeY for widgets to 2 since a value of 1 breaks all
assumptions of the UI layout.
Migration provide transition from 6 to 12 columns for all widgets.
* Restyled by prettier
In commits fc1e1f7 and e44fcdb a new Selector option was added to
alerts, which may be "first", "min" or "max". This migration sets the
default to "first" for existing alerts.
* Update Azure Data Explorer query runner to latest version
* Fix black issue
* downgrade azure-kusto-data to 4.6.3
* Freeze numpy to 1.24.4 because of 2.0.0 incompatibility
* Fix failing test
* Reformat test
Preview images work for personal repositories, but we missed another variable
when publishing official images:
#34 [auth] arikfr/redash:pull,push token for registry-1.docker.io
#34 DONE 0.0s
#33 exporting to image
#33 pushing layers 15.5s done
#33 pushing manifest for docker.io/arikfr/redash
#33 pushing manifest for docker.io/arikfr/redash 1.6s done
#33 ...
#35 [auth] arikfr/preview:pull,push token for registry-1.docker.io
#35 DONE 0.0s
Fix query list item list sorting
- descending order, no triangle mark
- ascending order, up triangle mark(▲)
- descending order, down triangle mark(▼)
- ascending order, no triangle mark
- descending order, up triangle mark(▲)
- ascending order, down triangle mark(▼)
- descending order, no triangle mark
"sorting order" have 2-click cycle, but "triangle mark" have 3-click cycle.
* Sanitize NaN, Infinite, -Infinite causing error when saving as PostgreSQL JSON #7339 (2nd try)
* Move json nsanitaize to on the top of json_dumps
* Fix comment
This fixes the following exception:
```
UnboundLocalError: local variable 'value_is_number' referenced before assignment
File "rq/worker.py", line 1431, in perform_job
rv = job.perform()
File "rq/job.py", line 1280, in perform
self._result = self._execute()
File "rq/job.py", line 1317, in _execute
result = self.func(*self.args, **self.kwargs)
File "redash/tasks/alerts.py", line 36, in check_alerts_for_query
new_state = alert.evaluate()
File "redash/models/__init__.py", line 1002, in evaluate
new_state = next_state(op, value, threshold)
File "redash/models/__init__.py", line 928, in next_state
elif not value_is_number and op not in [OPERATORS.get("!="), OPERATORS.get("=="), OPERATORS.get("equals")]:
```
* prevent text values in payload being detected as 'set' on send.
Webex send ERROR:: Object of type set is not JSON serializable
Signed-off-by: Matt Nelson <metheos@gmail.com>
* add support for formatted QUERY_RESULT_TABLE in webex card
Signed-off-by: Matt Nelson <metheos@gmail.com>
* don't try to send to blank destinations
Signed-off-by: Matt Nelson <metheos@gmail.com>
* fix handling of the encoded QUERY_RESULTS_TABLE text
Signed-off-by: Matt Nelson <metheos@gmail.com>
* re-sort imports for ruff
Signed-off-by: Matt Nelson <metheos@gmail.com>
* change formatter to black
Signed-off-by: Matt Nelson <metheos@gmail.com>
* Add additional tests for Webex notification handling
ensure blank entries are handled for room IDs and person emails.
ensure that the API is not called when no valid destinations are provided.
ensure proper attachment formatting for alerts containing 2D arrays.
Signed-off-by: Matt Nelson <metheos@gmail.com>
* Add test for Webex notification with 1D array handling
This commit introduces a new test case to verify that the Webex
notification function correctly handles a 1D array input in the alert body.
The test ensures that the expected payload is constructed properly and that
the requests.post method is called with the correct parameters.
Signed-off-by: Matt Nelson <metheos@gmail.com>
---------
Signed-off-by: Matt Nelson <metheos@gmail.com>
* Support result reuse
* Update pyathena to 2.25.2
* Separate options
* Regenerate the Poetry lock file
---------
Co-authored-by: SeongTae Jeong <seongtaejg@gmail.com>
I've experience this on my Redash in production. I'm not sure what can cause the value to exist, but be None. I guess it depends on the SQL query.
I followed the same idea of returning a self.UNKNOWN_STATE for cases that we can't know what's happening.
Something changed in python-rq and the old code was behaving in a way that if a job ran for longer than 2 min it would be automatically set as failed, but it would continue running.
This causes a problem in the UI because it is as if the job stopped, but it actually didn't
* Snapshot: 24.08.0-dev
* no more Running...0 or runtime0
* also missing a space
* Restyled by prettier
* check if data_scanned is defined
otherwise we could get "Data Scanned ?" if it's not supported
by some data sources
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Restyled.io <commits@restyled.io>
The Dependabot alert for sentry-sdk says that the security fix has
been backported to the 1.x series as well, in version 1.45.1.
So, lets use that as it should be more compatible that jumping to
a new major series version.
This change involved adding an extra option to the GridSettings editor,
adding the "fixed" option to columns, and adding styling for the fixed
columns. In order to change the number of fixed columns, which will
default to 0, one has to go to Edit visualization -> Grid -> Choose
number of columns to fix -> Save.
This covers cases where partitioned tables are part of a schema that is
not accessible by the current user.
CREATE SCHEMA xyz;
CREATE TABLE xyz.tab (
id bigint GENERATED ALWAYS AS IDENTITY,
ts timestamp NOT NULL
) PARTITION BY LIST ((ts::date));
CREATE TABLE xyz.tab_default PARTITION OF xyz.tab DEFAULT;
Updated from Python 3.8 to 3.10. Python 3.10 is the default for Ubuntu 22. This change necessitated upgrading to
SQLAlchemy_Utils 0.38.3, and importing the sort_query function from an older version of SQLAlchemy_Utils because it was dropped in newer versions.
Co-authored-by: Ezra Odio <eodio@starfishstorage.com>
"Query in queue" should switch to "Executing query", but does not.
Commands:
git revert --no-commit bd17662005
git revert --no-commit 5ac5d86f5e
vim tests/handlers/test_query_results.py
git add tests/handlers/test_query_results.py
Co-authored-by: Justin Clift <justin@postgresql.org>
This reverts commit bd115e7f5f, as
it turns out to be a useful security feature.
In order to remove this in a better way, we'll need to replace it
with something that provides equivalent functionality.
The 'codecov-action@v4' requires an organization-level upload token, not
a single repo upload token, so we're temporarily downgrading it until we
can generate an organization-level upload token.
Reference: https://github.com/codecov/codecov-action/issues/1273
Use Webpack configuration for locating this asset in the same way that
client/app/index.html does.
This code path is when REDASH_MULTI_ORG=true.
Co-authored-by: github-actions <github-actions@github.com>
This PR changes the default (tcp) port for the web user interface back to port 5001.
The recent change to port 5000 (to match an old default) turned out to be more painful than it's worth.
So, lets keep using port 5001 after all.
* filter widged results to fix tests during repeatable execution
* minor fix
* made queryName variable
---------
Co-authored-by: Andrew Chubatiuk <andrew.chubatiuk@motional.com>
The qds-sdk-py package along with the rest of the Qubole project is no longer
maintained:
3c6a34ce33
Removing this eliminates these warnings when running Redash management commands:
./qds_sdk/commands.py:1124: SyntaxWarning: "is" with a literal. Did you mean "=="?
if options.mode is "1":
./qds_sdk/commands.py:1137: SyntaxWarning: "is" with a literal. Did you mean "=="?
if options.db_update_mode is "updateonly":
./qds_sdk/commands.py:1424: SyntaxWarning: "is" with a literal. Did you mean "=="?
if (total is 0) or (downloaded == total):
Co-authored-by: github-actions <github-actions@github.com>
Format the Slack message using the "mrkdwn" type, which will make
hyperlinks clickable.
New test for Slack destination.
Co-authored-by: github-actions <github-actions@github.com>
To avoid warnings in the CI pipeline
> Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20
Co-authored-by: github-actions <github-actions@github.com>
Since #6687, we don't serialize query results as JSON
before returning them. This is fine, except for the
query results data source which needs to pass the
data directly to sqlite3, and doesn't know how to
do that with the decimal types that are occasionally
returned by (at least) the PostgreSQL query runner:
https://www.psycopg.org/docs/faq.html#problems-with-type-conversions
Using github.repository_owner name was convenient for testing this
action, but is not correct since account names do not match.
Git Hub: getredash/
Docker Hub: redash/
Co-authored-by: github-actions <github-actions@github.com>
* Only respond to new tags ending with -dev
* Use github account name to allow easier testing in a fork
* Allow preview image to be referenced by a specific tag, or by latest tag
redash/preview:24.02.0-dev
redash/redash:preview
Co-authored-by: github-actions <github-actions@github.com>
To allow this workflow to run even though normal contributors
are required to create a pull request.
Steps:
1. Generate SSH key pair: ssh-keygen -t ed25519. No need for passphrases etc.
2. Add public key (.pub one) as a deploy key at Your repo -> Settings ->
Security -> Deploy keys, check "Allow write access".
3. Add private key as a secret at Your repo -> Settings -> Security -> Secrets
and variables -> Actions
https://stackoverflow.com/a/76135647/1809872
Co-authored-by: github-actions <github-actions@github.com>
* Fixed notification template
* Made if-clause equal to append
Like Slack and email notification
* Add custom_body attribute to discord test
* Add missing attribute
* Adds influxdb v2 query runner as a default query runner.
* Deletes TableList object for typing, because it is possible, that the import of influxdb client fails.
---------
Co-authored-by: Masayuki Takahashi <masayuki038@gmail.com>
* Adds ssl support for prometheus query runner.
- Adds possibilty to upload and use of ssl cert, key and ca file in redash ui
* Extends test cases for prometheus query runner.
- Adds secret attribute to configuration schema.
* Fixes wrong timestamps in different timezones in prometheus' testcases.
- Dynamically calculates timestamps in testcases to be robust in
different timezones.
- Adds now datetime function to make it more testable.
* Fixes timestamp in prometheus' testcases which can be wrong depending on timezone.
---------
Co-authored-by: Masayuki Takahashi <masayuki038@gmail.com>
* Snapshot: 23.11.0-dev
* dataframe_to_result function moved outside python query runner
* added yandex disk query runner
* moved file_extension check
* skip unsupported extensions in schema
* removed unused variable
* added support for xlsx with multiple sheets
* moved pandas-converters to utils file
* added tests
* fixed backend tests
* fixed pandas to redash type conversion
* added more tests
* added tests for pandas
* added tests for pandas converter and yandex disk
* added tests for read_file and multiple sheets
* pandas: do not load if lib is not installed
* added test for yaml read
* fixed test for yaml read
---------
Co-authored-by: github-actions <github-actions@github.com>
Co-authored-by: Guido Petri <18634426+guidopetri@users.noreply.github.com>
* Update rockset.py with support for multi-VI
Rockset introduced compute-compute separation which allows multiple Virtual Instances (VIs) to query data independently. This a commit introduces support for executing queries on specific VIs from Redash.
Changes include:
- added new configuration element (not required): Virtual Instance ID
- if this VI ID is configured, Redash will use that specific VI to execute the query
- if it's not specified, Redash will execute the query on the main/default VI (same behaviour as before)
* Update rockset.py
Removed comment from the query method to pass lint test
* Update rockset.py - for linting
Added more formatting to pass the black lint test
* Update rockset.py - linting update
* Update rockset.py - updated lint
* Allow Query.options to be None
Query.options may not have a value on a database created by 10.1.0
* Ensure counter widget is not compressed in query preview tabs
Also bump minimum counter font size to 14
The required sql expressions for sqlalchemy_searchable are only created
on the sqlalchemy pre_create hook. When upgrading from a previous redash
version no CREATE statements may be run, so these expressions are never
created.
Add a migration to manually execute the sql_expressions DDL from
sqlalchemy_searchable.
* Add column type to a query result of InfluxDB
* Remove an unused import
* Migrate to pytest
* Rename test names to descriptive
---------
Co-authored-by: Guido Petri <18634426+guidopetri@users.noreply.github.com>
update greenlet to 2.0.2 -
Because redash depends on gevent (23.9.1) which depends on greenlet (>=2.0.0), greenlet is required.
So, because redash depends on greenlet (1.1.3), version solving failed.
__file__ will resolve to tests/test_cli.py, which is already opened by Python.
When tests are run on a network file system the test runner may deadlock while
waiting for an advisory lock to be released on this file.
* change author and add maintainers
* remove bin/upgrade
* update project author/maintainers
* comment on how to get added/removed from the mailing list
* Check all Trino catalogs if no catalog configured
- If catalog is not set, query 'SHOW CATALOGS' to get catalogs
- For each catalog, discover schema, table, columns
- If catalog has a `.`, then quote the catalog name
- New table name returned includes catalog name
- If catalog is set, same result as before
* Use self._handle_run_query_error(error)
* Fix lint problem & format w/ black
* Fix condition so catalog_prefixes are [""] when catalog is set
* Fix for loop / Remove default values for catalog & schema
* Add untested tests for Trino's get_schema
* Black formatting
* Add test_get_schema_catalog_set test & fix tests
* Parameterize the side_effect fn thoroughly
* Get catalogs (not catalog_prefixes) bc confusing
* Trino._get_catalogs added for testability
There's a few advantages of using ruff over these tools:
* It's way faster
* It's easier to configure
* It includes support for a bunch of other linters (for example bugbear)
right out of the box, which catches some things and makes our code
more consistent.
Ruff works great with black, which I'd recommend we continue using.
Fixed a few minor issues that the new linter combo picked up.
* poetry init
* add all dependencies
* update pyproject.toml
* add poetry.lock
* remove requirements txt fixer
* add ldap3 group and make all groups optional
* remove requirements files
* convert dockerfile to use poetry instead of pip
* fix ldap 3 dependency group typo
* update ldap3 inline error
* update cypress to install only main poetry group
* convert test_all_deps
* update redis/rq
* don't create virtualenv
* add -dev suffix and make version snapshot work
* fix typo in snapshot commit message
* remove importlib-resources
This is not required for Python >= 3.8 since the goal of this project is
to back port functionality. Also the version specified is not
compatible with later versions of Python.
https://pypi.org/project/importlib-resources/
oauth2client was deprecated in 2017 and is no longer maintained.
This rewrites the service credentials code and replaces it with google-auth.
It also makes the JSON key file optional for the data source and use the
application's default credentials (ADC) if the JSON key file is omitted.
This enables support for a variety of GCP authentication methods, including
the gcloud CLI, GCE metadata servers, and GKE or AWS Workload Identity.
Note that the bigquery_gce functionality is covered by ADC, but is retained
for compatibility reasons.
Co-authored-by: Guido Petri <18634426+guidopetri@users.noreply.github.com>
* convert unexpected validation errors to InvalidParameterError
* get rid of local except blocks - any failure to validate is caught in _valid()
* avoid bare exception
* don't assign exception if we're not going to use it
* preferentially raise querydetachedfromdatasource error if it is present
---------
Co-authored-by: Omer Lachish <omer@rauchy.net>
Co-authored-by: Guido Petri <18634426+guidopetri@users.noreply.github.com>
This needs the appropriate Docker Hub login credentials set in our GitHub settings before it will work properly.
* DOCKER_USER environment variable
* DOCKER_PASS secret
* Use multi_byte_search_enabled option for My Queries search and Favorite List search
* make format
* add search by user tests
---------
Co-authored-by: Justin Clift <justin@postgresql.org>
Co-authored-by: Guido Petri <18634426+guidopetri@users.noreply.github.com>
* Support to find a worksheet by the title for google_spreadsheets
* Add tests for parse_query
* Fix types
* Add tests when finding a worksheet by a title is failed
* Proxy by a wrapper instead of using spreadsheet directly. Do not use gspread in tests
* Add tests. Fix format of quoted strings for titles
* Fix an error format
* Add a newline
* Fix formatting
---------
Co-authored-by: Justin Clift <justin@postgresql.org>
* Add Asana alert destination
* change icon
* fix format
* add except in log
* fix flake8
* add metadata kwarg to notify
* update asana image
* make pat and project id required
* rename asana destination icon
* reuse Alert
* extract api base url to property method
* use required options
* add asana destination test
* make format
* define metadata
* fix test
* remove json.dumps from asana test
---------
Co-authored-by: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com>
Co-authored-by: konnectr <1konnectrl@gmail.com>
Co-authored-by: Guido Petri <18634426+guidopetri@users.noreply.github.com>
* [client] add friendly console log on '<' syntax error
Issue: when a javascript file is served with invalid contents, sometimes
it means that a fallback html file was returned from server instead.
This can be hard to determine because the stack trace is not helpful and
the `filename` information was previously lost from the global error
handler.
Added a specific error for this case to produce a friendlier error
message on the console.
* Add ace define override for custom mode
* Apply prettier changes
---------
Co-authored-by: Justin Clift <justin@postgresql.org>
* increase duplicate column names based on the original column name and not the number of duplicates detected
* add fetch columns test for base query runner
---------
Co-authored-by: Omer Lachish <omer@rauchy.net>
Co-authored-by: Guido Petri <18634426+guidopetri@users.noreply.github.com>
* Fix python query runner crashing the GUI due to missing 'rows' and/or 'columns' in the JSON returned data.
* Fix typo of previous commit.
* Throw exception when python query runner has invalid result.
* Update test_python.py
---------
Co-authored-by: YuhengChen <yuheng.chen@imaygou.com>
* Fix: Query results in public dashboard not loading when query ends with semicolon
* fix flake8 error for commit 7a50b18d3
---------
Co-authored-by: Alexander Strickner <alexander.strickner@outlook.com>
The current get_schema method of Trino query runner is missing table columns' data types information, so these data types won't be seen in Queries editing GUI. After the modification, these info are back.
Co-authored-by: V <4979571+vnnw@users.noreply.github.com>
* Incomplete URL substring sanitization
* fix hostname
* Only match on the exact host name
---------
Co-authored-by: Justin Clift <justin@postgresql.org>
* Do not makedsn. instead self.configuration["servicename"]
in host == "_donotmakedsn"
* add comment
* mod properties in `host`
* mod properties in `host`
* mod word. in host == "_donotmakedsn" to "_useservicename"
* mod properties in `host`
* fix format
For some unknown reason the `--colors` and `-d` options are no longer recognised by webpack (v4) in our configuration.
This is likely due to some other non-obvious problem in our configuration, as those options should exist (they're documented).
For now though, this gets things working again.
The config file format for webpack has changed slightly, so webpack was throwing this error:
Invalid options object. Less Loader has been initialized using an
options object that does not match the API schema.
This commit updates the config file format so webpack works again.
Yarn seems to miss a lot of deduplication opportunities, regardless of what the docs claim.
This can leave old, insecure versions of some dependencies in use when they shouldn't be.
* add try except for data_source
* add try except for data_source
* fix errir handle
* add test for no data source
* changed error handle
* fix format
* fix test
---------
Co-authored-by: Konstantin Smirnov <46676677+konnectr@users.noreply.github.com>
Co-authored-by: konnectr <1konnectrl@gmail.com>
Dependabot couldn't find the original pull request head commit, b868bb5edd4a3fc036ed40754f099f37541a2814.
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump Cypress to 6.0.1
Unfortunately, due to a change in how Cypress treats elements with opacity 0, we need to disable two of the front end tests.
Hopefully someday, someone with better knowledge of JS and Cypress is able to fix these. :)
- Escape all variables by default since Mustache only has a syntax for raw values
- Generate a generic HTML result table to allow an alert template to display any query
- Optionally allow alert template to be defined to be set using REDASH_ALERTS_DEFAULT_MAIL_BODY_TEMPLATE
- Formatting updated by black
Generating the query hash from the query text with no lowercasing of the query text
allows case-sensitive parameter values in the dashboard to have different cache entries.
Fixes#2137
* Fix persisting datasource selection choice
Closes getredash/redash#5646.
We were already storing this in localStorage, however we weren't
accounting for the fact that it was stored as a string, rather than
an integer.
* Restyled by prettier (#6182)
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>
* Reencrypt Database Safely
* Try with only one statement
* remove success logging
Signed-off-by: Ye Sijun <junnplus@gmail.com>
---------
Signed-off-by: Ye Sijun <junnplus@gmail.com>
Co-authored-by: Jun <junnplus@gmail.com>
Also adds the POSTGRES_HOST_AUTH_METHOD environment variable to the CI docker compose files. Modern PostgreSQL docker images need it, at least as they're used by our CI.
Problem: setting the `REDASH_REFERRER_POLICY` environment variable also sets the feature policy in addition to the referrer policy. Conversely, there is no way to set the feature policy on its own.
It looks like a copy/paste error from the line above.
Solution: change the feature policy to be set by a `REDASH_FEATURE_POLICY` environment variable.
* Remove DynamoDB as a data source for now, due to dependency incompatibilities
* Remove Firebolt as a data source for now, due to dependency incompatibilities
* Remove pymapd / pyomnisci / heavyai, due to dependency incompatibilities
* Remove pycrypto, upgrade cryptography
* Remove pyarrow (for now), which we no longer need
* Require an (older) version of black, to avoid test failures with more recent click library
* Upgrade gevent to 21.12.0
* Upgrade greenlet to 1.1.2
* Upgrade httpli2 to 0.18.1
* Upgrade requests to 2.31.0
* Upgrade snowflake-connector-python to 3.0.4
* Upgrade urllib3 to 1.25.11
Note, the warning message caused by the older versions of gevent and greenlet was:
RuntimeWarning: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 40 from C header, got 144 from PyObject
* Pin boto3 dependencies in dev requirements as well
Testing to see if this fixes CI, where it appears a more recent (too
recent) version of boto3 is being installed.
* Add circle step to list installed packages
This takes almost no time, and helps debug dependency issues (a
longer-term fix might be to switch to pip-compile).
* 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.
* 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>
* 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.
- 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>
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>
* Fix hard-coding of amd64 platform and make amd64 package installation conditional
* Cleanup Dockerfile for best practices
* Enable BuildKit for docker building
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
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
* 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>
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>
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
* 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.
* 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
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)
* 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>
* 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
* 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
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.
* 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
* 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
* 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
* 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)
* reset failure counter when query completes successfully via adhoc
* Use "query_id" in metadata, but still allow "Query ID" for transition/legacy support
* 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 00a1685b1b.
* Wrapped close icon into button
* 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
* 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
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.
* 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
* 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>
* 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>
* 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
* 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>
* 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>
* 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
* 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
* 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
* 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
* 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
* 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
* add default limit 1000
* Add frontend changes and connect to backend
* Fix query hash because of default limit
* fix CircleCI test
* adjust for comment
* 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
* 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
* 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
* 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.
* 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>
* 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>
* 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>
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.
* 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
* 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
* 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
* 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>
* 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`
* 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>
* 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
* 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>
* 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
* 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>
* Vertical navbar
* Update vertical menu look and add create menu.
* Make query editor work with vertical nav.
* Dark mode
* Fix create menu & make sidebar fixed.
* Update Alert pages layout
* Update System status pages
* Update Queries and Dashboards list pages
* Update Query Source and Query View pages
* Use dark theme for mobile navbar
* Update Dashboard page: fix Add widget/textbox panel positioning
* Dashboard page: fix layout issues when container changes its size (fixes known issues: navbar expand/collapse, scrollbar appears/hides)
* Fix dashboard page sticky header (there was a 15px space above it)
* Fix embeds
* Extract desktop navbar component; move mobile navbar and its styles to ApplicationLayout folder
* Remove old app header
* Fix tests
* Restore version info block
* Make Percy capture entire page
* Make vertical navbar expand/collapse animation smoother (as it's currently impossible to disable it :-( )
* Fix misc UI issues (show Create label on expanded menu; fix some CSS; don't select items on click)
* Allow to override navbars with DynamicComponent
* Fix misc UI issues: expand/collapse button animation, menu items styles, menu expand/collapse animation
* Hide submenu arrow; show username when menu is expanded
* Refine CSS and make it more isolated; adjust colors
* Update tests
Co-authored-by: Arik Fraimovich <arik@arikfr.com>
* V9 Changelog: Initial Draft from Jesse
* V9 Changelog: Add later updates
* Adjust title spacing
* Apply Jesse's suggestions
Co-authored-by: Jesse <jesse@whitehouse.dev>
* provide an explanation on how to switch from Celery to RQ when upgrading to v9
* Update CHANGELOG.md
Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com>
* Add contributor names
* Update version.
* Update CHANGELOG
Co-authored-by: Gabriel Dutra <nesk.frz@gmail.com>
Co-authored-by: Jesse <jesse@whitehouse.dev>
Co-authored-by: Omer Lachish <omer@rauchy.net>
* Plotly Charts: use .bg to determine legends size
* Test: remove hack for legend below plotly
* Revert "Test: remove hack for legend below plotly"
This reverts commit d8efb0c032.
* Use .legend to calculate bounds
* Also update plots without legend
* Sankey: Make sure last stage has "Exit"
* Sankey: Use 2 as min stage width size to render
* Use null instead of "Exit"
* Add comment about corresponding exit node
* Add multiple stages on Cypress test
* don't join underlying exception message with commas when invalid parameter errors happen
* Revert "don't join underlying exception message with commas when invalid parameter errors happen"
This reverts commit 71a21b7ce6.
* when a problem occurs during refresh_queries, report it as a RefreshQueriesError
* Fix: table viz crashing when search is enabled
* Replace that weird hack with more controlled code
* Don't clear search input, apply search when data changes
Co-authored-by: Levko Kravets <levko.ne@gmail.com>
* Add build arg to Dockerfile to control if we should build frontend assets
* Move more env settings into the shared one.
* Use build arg in docker-compose to skip frontend build.
* CirlceCI: Skip building frontend assets in backend tests
* Create dummy template files
* Expand file names manually.
* Add build arg to skip dev dependencies.
* Update Dockerfile
* Reverse logic of skip_dev_deps to what it should be.
* run queries through adhoc SSH tunnels
* reduce indent by losing try/else clause
* document host/port getters and setters
* handle forceful schema refreshes in RQ and poll for their results using the /jobs endpoint
* set schema refresh timeout to 5 minutes
* Restyled by prettier (#4847)
Co-authored-by: Restyled.io <commits@restyled.io>
* send schema refresh errors as part of API response
* Use correct get_schema call.
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: Arik Fraimovich <arik@arikfr.com>
* Add option to explicitly set chart legend position
* Revert some chanes in order to fix tests
* Leave only "auto" and "below the plot" legend placement options
* Move Show legend checkbox to select; fix spelling
* Add visualizations project settings
* Move visualizations to redash-visualizations
* Delete shared components
* Remove antd from deps
* Remove p-r-5 from table utils
* Remove visualization deps from package.json
* Rename package and change its version
* Test preinstall script
* Update Dockerfile build for frontend
* Test adding dockerignore
* Update jest tests
* Add step for jest tests
* Include viz-lib on dev commands
* User prettier v1 for now
* Delete unused libs on the app
* Add readme draft (to be finished)
* Add getOptions to Editor
* Add required libraries and finish basic example
* Bump version
* A new intro paragraph to explain what Redash is
We have been using Redash at Databricks and really love it. I took the time to work with Arik to create a better, more up-to-date description of the project.
* Add data sources
* Fix: showing current settings tab broken in MULTI_ORG.
* Revert "Fix: showing current settings tab broken in MULTI_ORG."
This reverts commit a88defd0b5.
* Add test for SettingsMenu#isActive
* Use stripBase to remove slug from url
* ODBC Based Databricks connector.
* Install Databricks' ODBC driver in Docker image
* Add useragent string.
* Add Types enum to redash.query_runner to replace the seprate constants.
* Databricks connector:
1. Parse types.
2. Send additional connection options.
3. Correctly parse errors.
* Switch to TYPE constants to use code with Python 2.
* Add note about the Databricks driver terms and conditions.
* Show message about Databricks driver terms and conditions.
* Handle cases when the query doesn't return any results.
* Update redash/query_runner/databricks.py
Co-Authored-By: Jesse <jesse@whitehouse.dev>
* Use new Databricks logo
* Fix connection string options
Co-authored-by: Jesse <jesse@whitehouse.dev>
* Move Dashboard off `subqueryload()` loader in all() method due to inconsistent results bug in SQLAlchemy when leveraging distinct within a subqueryload call through paginate.
* Added source reference to Presto Query Runner connection through the pyhive client to announce to presto that the query is coming from `redash` instead of `pyhive`.
* Removing source line from presto query runner to refactor based on feedback.
Let the notifications go into browser/OS notification trays so users can click on them from there if they miss the initial notification. Modern browsers generally use OS notifications so the user is in control of the notification at the OS level.
* Fix comparison error when scale is None
Prevents `'>' not supported between instances of 'NoneType' and 'int'` error when scale is `None`
* Update oracle.py
* Fix scale logic.
Co-authored-by: Arik Fraimovich <arik@arikfr.com>
* add pyexasol datasource, ensure that integer dont overflow in javascript
* support setting encryption for Exasol connections
Co-authored-by: Arik Fraimovich <arik@arikfr.com>
* feature: add ability to make the restriction of api calls to private addresses optional
* chore: fix typo
* Update redash/settings/__init__.py
Co-authored-by: lprice92 <lprice92@iastate.edu>
Co-authored-by: Arik Fraimovich <arik@arikfr.com>
* Limit filters to 40% of query fixed layout space
* Add check for height to determine fixed layout
* Add maxTagCount of 5 to Filters
* Update maxTagCount settings to be similar to Parameters
* feat: provide ssl options for Cassandra data source
* remove Log and prints
* Refactor to create module methods and unit tests
* Switch to using Enumerator and temp file
* Fix temporary file lifecycle for cert
* Align with changes on master
* Fix non certificate but ssl enabled usecase
* Fix query based param with no results crashing page
* Add message for empty dropdown parameters
* Handle 500 no results case with empty result set
* Cypress: Make sure it shows the message
* Use .ant-select-selection to open dropdown
Redash's docker-compose file will no longer bring up an environment from
a cold start due to recent upstream changes to the postgres image that
force the user to either set a password for the default superuser or
opt-in to allowing all connections without a password via environment
variable.
Upstream PR: https://github.com/docker-library/postgres/pull/658
Related Discussion: https://github.com/docker-library/postgres/issues/681
* Cohort: add settings for tooltips, value formats and placeholder
* Cohort: add settings for colors
* Cohort: change all settings tabs to use horizontal inputs
* Cohort: show color labels in editor
* Trigger lint error on warnings on CI
* Test removing pip3 command from frontend unit
* Test eslint warning
* Revert "Test eslint warning"
This reverts commit 89d407345a.
* Revert "Test removing pip3 command from frontend unit"
This reverts commit 424c900200.
* Run apt update before installing pip3
* Stop using route.resolve feature (pages should load all the data themselves)
* Remove route.resolve feature
Co-authored-by: Arik Fraimovich <arik@arikfr.com>
* Allow touch action on dashboard grid
* Deactivate touch when resizing widgets
* Disable touch interactions on Plotly
* Update Plotly and use dragmode: false
* Remove autoFocus from ItemsList search
* Fix spacing for queries and dashboard favorites
* Make sure admin pages don't go over 100% width
'postgres' is a default database name in the Docker image, but if an
external database server is used, than Redash database can have
a different name (specified in REDASH_DATABASE_URL).
* Fix: when default value is false make sure it's still stringified.
* Fix: when extra field is of type boolean make sure it's different from default value to decide if it's open.
* Use isNil to check the default value
* Restyled by prettier (#4704)
Co-authored-by: restyled-io[bot] <32688539+restyled-io[bot]@users.noreply.github.com>
* Snowflake: use different method of showing columns if no schema specified in db name
* Update redash/query_runner/snowflake.py
Co-Authored-By: Omer Lachish <omer@rauchy.net>
* Update redash/query_runner/snowflake.py
Co-authored-by: Omer Lachish <omer@rauchy.net>
* move filtering of invalid schedules to the query
* simplify retrieved_at assignment and wrap in a try/except block to avoid one query blowing up the rest
* refactor refresh_queries to use simpler functions with a single responsibility and add try/except blocks to avoid one query blowing up the rest
* avoid blowing up when job locks point to expired Job objects. Enqueue them again instead
* there's no need to check for the existence of interval - all schedules have intervals
* disable faulty schedules
* reduce FP style in refresh_queries
* report refresh_queries errors to Sentry (if it is configured)
* avoid using exists+fetch and use exceptions instead
* Update oracle.py
The reason I propose this change is to fix an issue when oracle password has an @
example of connection string: user/p@ssword@host
* Update oracle.py
Fixing init after comments
* Remove empty constructor.
Co-authored-by: Arik Fraimovich <arik@arikfr.com>
* Realign Data Source and Refresh Schedule
* Adjust execution status height
* Rewrite Query Page Header flexibility
* Remove margin from QuerySource parameters
* Cypress: Visit visualization instead of click in tab
* Fix wrong css class name in dashboard-grid
@@ -7,10 +7,10 @@ about: Report reproducible software issues so we can improve
We use GitHub only for bug reports 🐛
We use GitHub only for bug reports 🐛
Anything else should be posted to https://discuss.redash.io 👫
Anything else should be a discussion: https://github.com/getredash/redash/discussions/ 👫
🚨For support, help & questions use https://discuss.redash.io/c/support
🚨For support, help & questions use https://github.com/getredash/redash/discussions/categories/q-a
💡For feature requests & ideas use https://discuss.redash.io/c/feature-requests
💡For feature requests & ideas use https://github.com/getredash/redash/discussions/categories/ideas
**Found a security vulnerability?** Please email security@redash.io to report any security vulnerabilities. We will acknowledge receipt of your vulnerability and strive to send you regular updates about our progress. If you're curious about the status of your disclosure please feel free to email us again. If you want to encrypt your disclosure email, you can use this PGP key.
**Found a security vulnerability?** Please email security@redash.io to report any security vulnerabilities. We will acknowledge receipt of your vulnerability and strive to send you regular updates about our progress. If you're curious about the status of your disclosure please feel free to email us again. If you want to encrypt your disclosure email, you can use this PGP key.
This release includes patches for three security vulnerabilities:
- Insecure default configuration affects installations where REDASH_COOKIE_SECRET is not set explicitly (CVE-2021-41192)
- SSRF vulnerability affects installations that enabled URL-loading data sources (CVE-2021-43780)
- Incorrect usage of state parameter in OAuth client code affects installations where Google Login is enabled (CVE-2021-43777)
And a couple features that didn't merge in time for 10.0.0
- Big Query: Speed up schema loading (#5632)
- Add support for Firebolt data source (#5606)
- Fix: Loading schema for Sqlite DB with "Order" column name fails (#5623)
## v10.0.0 - 2021-10-01
A few changes were merged during the V10 beta period.
- New Data Source: CSV/Excel Files
- Fix: Edit Source button disappeared for users without CanEdit permissions
- We pinned our docker base image to Python3.7-slim-buster to avoid build issues
- Fix: dashboard list pagination didn't work
## v10.0.0-beta - 2021-06-16
Just over a year since our last release, the V10 beta is ready. Since we never made a non-beta release of V9, we expect many users will upgrade directly from V8 -> V10. This will bring a lot of exciting features. Please check out the V9 beta release notes below to learn more.
This V10 beta incorporates fixes for the feedback we received on the V9 beta along with a few long-requested features (horizontal bar charts!) and other changes to improve UX and reliability.
This release was made possible by contributions from 35+ people (the Github API didn't let us pull handles this time around): Alex Kovar, Alexander Rusanov, Arik Fraimovich, Ben Amor, Christopher Grant, Đặng Minh Dũng, Daniel Lang, deecay, Elad Ossadon, Gabriel Dutra, iwakiriK, Jannis Leidel, Jerry, Jesse Whitehouse, Jiajie Zhong, Jim Sparkman, Jonathan Hult, Josh Bohde, Justin Talbot, koooge, Lei Ni, Levko Kravets, Lingkai Kong, max-voronov, Mike Nason, Nolan Nichols, Omer Lachish, Patrick Yang, peterlee, Rafael Wendel, Sebastian Tramp, simonschneider-db, Tim Gates, Tobias Macey, Vipul Mathur, and Vladislav Denisov
Our special thanks to [Sohail Ahmed](https://pk.linkedin.com/in/sohail-ahmed-755776184) for reporting a vulnerability in our "forgot password" page (#5425)
### Upgrading
(This section is duplicated from the previous release - since many users will upgrade directly from V8 -> V10)
Typically, if you are running your own instance of Redash and wish to upgrade, you would simply modify the Docker tag in your `docker-compose.yml` file. Since RQ has replaced Celery in this version, there are a couple extra modifications that need to be done in your `docker-compose.yml`:
1. Under `services/scheduler/environment`, omit `QUEUES` and `WORKERS_COUNT` (and omit `environment` altogether if it is empty).
2. Under `services`, add a new service for general RQ jobs:
```yaml
worker:
<<:*redash-service
command:worker
environment:
QUEUES:"periodic emails default"
WORKERS_COUNT:1
```
Following that, force a recreation of your containers with `docker-compose up --force-recreate --build` and you should be good to go.
### UX
- Redash now uses a vertical navbar
- Dashboard list now includes “My Dashboards” filter
- Dashboard parameters can now be re-ordered
- Queries can now be executed with Shift + Enter on all platforms.
- Added New Dashboard/Query/Alert buttons to corresponding list pages
- Dashboard text widgets now prompt to confirm before closing the text editor
- A plus sign is now shown between tags used for search
- On the queries list view “My Queries” has moved above “Archived”
- Improved behavior for filtering by tags in list views
- When a user’s session expires for inactivity, they are prompted to log-in with a pop-up so they don’t lose their place in the app
- Numerous accessibility changes towards the a11y standard
- Hide the “Create” menu button if current user doesn’t have permission to any data sources
### Visualizations
- Feature: Added support for horizontal box plots
- Feature: Added support for horizontal bar charts
- Feature: Added “Reverse” option for Chart visualization legend
- Feature: Added option to align Chart Y-axes at zero
- Feature: The table visualization header is now fixed when scrolling
- Feature: Added USA map to choropleth visualization
- Fix: Selected filters were reset when switching visualizations
- Fix: Stacked bar chart showed the wrong Y-axis range in some cases
- Fix: Bar chart with second y axis overlapped data series
- Fix: Y-axis autoscale failed when min or max was set
- Fix: Custom JS visualization was broken because of a typo
- Fix: Too large visualization caused filters block to collapse
- Fix: Sankey visualization looked inconsistent if the data source returned VARCHAR instead of numeric types
### Structural Updates
- Redash now prevents CSRF attacks
- Migration to TypeScript
- Upgrade to Antd version 4
### Data Sources
- New Data Sources: SPARQL Endpoint, Eccenca Corporate Memory, TrinoDB
- Databricks
- Custom Schema Browser that allows switching between databases
- Option added to truncate large results
- Support for multiple-statement queries
- Schema browser can now use eventlet instead of RQ
- MongoDB:
- Moved Username and Password out of the connection string so that password can be stored secretly
- Oracle:
- Fix: Annotated queries always failed. Annotation is now disabled
- Postgres/CockroachDB:
- SSL certfile/keyfile fields are now handled as secret
- Python:
- Feature: Custom built-ins are now supported
- Fix: Query runner was not compatible with Python 3
- Snowflake:
- Data source now accepts a custom host address (for use with proxies)
- TreasureData:
- API key field is now handled as secret
- Yandex:
- OAuth token field is now handled as secret
### Alerts
- Feature: Added ability to mute alerts without deleting them
- Change: Non-email alert destination details are now obfuscated to avoid leaking sensitive information (webhook URLs, tokens etc.)
- Fix: numerical comparisons failed if value from query was a string
### Parameters
- Added “Last 12 months” option for dynamic date ranges
### Bug Fixes
- Fix: Private addresses were not allowed even when enforcing was disabled
- Fix: Python query runner wasn’t updated for Python 3
- Fix: Sorting queries by schedule returned the wrong order
- Fix: Counter visualization was enormous in some cases
- Fix: Dashboard URL will now change when the dashboard title changes
- Fix: URL parameters were removed when forking a query
- Fix: Create link on data sources page was broken
- Fix: Queries could be reassigned to read-only data sources
- Fix: Multi-select dropdown was very slow if there were 1k+ options
- Fix: Search Input couldn’t be focused or updated while editing a dashboard
- Fix: The CLI command for “status” did not work
- Fix: The dashboard list screen displayed too few items under certain pagination configurations
### Other
- Added an environment variable to disable public sharing links for queries and dashboards
- Alert destinations are now encrypted at the database
- The base query runner now has stubs to implement result truncating for other data sources
- Static SAML configuration and assertion encryption are now supported
- Adds new component for adding extra actions to the query and dashboard pages
- Non-admins with at least view_only permission on a dashboard can now make GET requests to the data source resource
- Added a BLOCKED_DOMAINS setting to prevent sign-ups from emails at specific domains
- Added a rate limit to the “forgot password” page
- RQ workers will now shutdown gracefully for known error codes
- Scheduled execution failure counter now resets following a successful ad hoc execution
- Redash now deletes locks for cancelled queries
- Upgraded Ace Editor from v6 to v9
- Added a periodic job to remove ghost locks
- Removed content width limit on all pages
- Introduce a <Link> React component
## v9.0.0-beta - 2020-06-11
This release was long time in the making and has several major changes:
- Our backend code was updated to support Python 3 and we no longer support Python 2. If you're using our Docker images, this should be a transparent change for you.
- We replaced Celery with RQ for background jobs processing. This will require some setup updates -- see instructions below.
- The frontend code is now 100% React and we removed all the Angular dependencies.
This release was made possible by contributions from over 50 people: @ari-e, @ariarijp, @arihantsurana, @arikfr, @atharvai, @cemremengu, @chulucninh09, @citrin, @daniellangnet, @DavidHernandez, @deecay, @dmudro, @erans, @erels, @ezkl, @gabrieldutra, @gstaykov, @ialeinikov, @ikenji, @Jakdaw, @jezdez, @juanvasquezreyes, @koooge, @kravets-levko, @kykrueger, @leibowitz, @leosunmo, @lihan, @loganprice, @mickeey2525, @mnoorenberghe, @monicagangwar, @NicolasLM, @p-yang, @Ralnoc, @ranbena, @randyzwitch, @rauchy, @rxin, @saravananselvamohan, @satyamkrishna, @shinsuke-nara, @stefan-mees, @stevebuckingham, @susodapop, @taminif, @thewarpaint, @tsuyoshizawa, @uncletimmy3, @wengkham.
### Upgrading
Typically, if you are running your own instance of Redash and wish to upgrade, you would simply modify the Docker tag in your `docker-compose.yml` file. Since RQ has replaced Celery in this version, there are a couple extra modifications that need to be done in your `docker-compose.yml`:
1. Under `services/scheduler/environment`, omit `QUEUES` and `WORKERS_COUNT` (and omit `environment` altogether if it is empty).
2. Under `services`, add a new service for general RQ jobs:
```yaml
worker:
<<:*redash-service
command:worker
environment:
QUEUES:"periodic emails default"
WORKERS_COUNT:1
```
Following that, force a recreation of your containers with `docker-compose up --force-recreate --build` and you should be good to go.
### UX
- Redesigned Query Results page:
- Completely new layout is easier to read for non-technical Redash users.
- Empty query results are clearly displayed. User is now prompted to edit or execute the query.
- Mobile Experience Improvements:
- UI element spacing has been redesigned for clarity
- Admin pages now honor max-width. Tables scroll independent of the top menu.
- Large legends no longer shrink the visualization on small screens.
- Fix: it was sometimes impossible to scroll pages with dashboards because the visualizations captured every touch event.
- Fix: Visualizations on small screens would not always show horizontal scroll bars.
- Dashboards can now be un-archived using the API.
- Dashboard UI performance was improved.
- List pages were changed to show a user's name instead of avatar.
- Search-enabled tables now show a prompt for which columns will be searched.
- In the visualization editor, the settings pane now scrolls independent of the visualization preview.
- Tokens in the schema viewer now sort alphabetically.
- Links to settings panes that require Admin privileges are now hidden from non-Admins.
- The Admin page now remembers which tab you were viewing after a page reload.
### Visualizations
- Feature: Allow bubble size control with either coefficient or sizemode.
- Feature: Table visualization now treats Unix timestamps in query results as timestamps.
- Feature: It's now possible to provide a description to each Table column, appearing in UI as a tooltip.
- Feature: Added tooltip and popover templating to the map with markers visualization.
- Feature: Added an organization setting to hide the Plotly mode bar on all visualizations.
- Feature: Cohort visualization now has appearance settings.
- Feature: Add option to explicitly set Chart legend position.
- Change: Deprecated visualizations are now hidden.
- Change: Table settings editor now extends vertically instead of horizontally.
- Change: The maximum table pagination is now 500.
- Change: Pie chart labels maintain contrast against lighter slices.
- Fix: Chart series switched places when picking Y axis.
- Fix: Third column was not selectable for Bubble and Heatmap charts.
- Fix: On the counter visualizations, the “count rows” option showed an empty string instead of 0.
- Fix: Table visualization with column named "children" rendered +/- buttons.
- Fix: Sankey visualization now correctly occupies all available area even with fewer stages.
- Fix: Pie chart ignores series labels.
### Data Sources
- New Data Sources: Amazon Cloudwatch, Amazon CloudWatch Logs Insights, Azure Kusto, Exasol.
- Athena:
- Added the option to specify a base cost in settings, displaying a price for each query when executed.
- BigQuery:
- Fix: large jobs continued running after the user clicked “Cancel” query execution.
- Cassandra:
- Updated driver to 3.21.0 which dramatically reduces Docker build times.
- SSL options are now available.
- Clickhouse:
- You can now choose whether to verify the SSL certificate.
- Databricks:
- Databricks now use an ODBC-based connector.
- Fix: Date column was coerced to DateTime in the front-end.
- Druid:
- Added username and password authentication option.
- Microsoft SQL Server
- Added support for ODBC connections via pyodbc. There are now two MSSQL data source types. One using TDS. The other is using ODBC.
- MongoDB:
- Added support for running queries on secondary in replicaset mode.
- Fix: Connection test always succeeded.
- Oracle:
- Fix: Connection would fail if username or password contained special characters.
- Fix: Comparisons would fail if scale was None.
- RDS:
- Updated rds-combined-ca-bundle.pem to the latest CA.
- Redshift:
- Added the ability to use IAM Roles and Users.
- Fix: Redshift was unable to have its schema refreshed.
- Rockset:
- Fix: Allow Redash to load collections in all workspaces.
- Snowflake:
- You can now refresh the snowflake schema without waking the cluster.
- Added support for all of Snowflake’s datetime types. Otherwise certain timestamps would only appear as strings in the front-end.
- TreasureData:
- Fix: API calls would fail when setting a non-default region.
### Alerts
- Feature: Added ability to mute alerts without deleting them.
- Fix: numerical comparisons failed if value from query was a string.
### Parameters
- Added Last x Days options for date range parameters.
- Fix: Parameters added in empty queries were always added as text parameters
### Bug Fixes
- Fix: Alembic migration schema was preventing v4 users from upgrading. In v5 we started encrypting data source credentials in the database.
- Fix: System admin dashboard would not show correct database size if non-default name was used.
- Fix: refresh_queries job would break if any query had a bad schedule object.
- Fix: Orgs with LDAP enabled couldn’t disable password login.
- Fix: SSL mode was sometimes sent as an empty string to the database instead of omitted entirely.
- Fix: When creating new Map visualization with clustering disabled, map would crash on save.
- Fix: It was possible on the New Query page to click “Save” multiple times, causing multiple new query records to be created.
- Fix: Visualization render errors on a dashboard would crash the entire page.
- Fix: A scheduled execution failure would modify the query’s “updated_at” timestamp.
- Fix: Parameter UI would wrap awkwardly during some drag operations.
- Fix: In dashboard edit mode, users couldn’t modify widgets.
- Fix: Frontend error when parsing a NaN float.
### Other
- Added TSV as a download format (in addition to CSV and Excel).
- Added maildev settings (helps with automated settings).
- Refine permissions usage in Redash to allow for guest users
- The query results API now explicitly handles 404 errors.
- Forked queries now retain the tags of the original query.
- We now allow setting custom Sentry environments.
- Started using Black linter for our Python source code
- Added CLI command to re-encrypt data source details with new secret key.
- Favorites list is now loaded on menu click instead of on page load.
- Administrators can now allow connections to private IP addresses.
## v8.0.0 - 2019-10-27
## v8.0.0 - 2019-10-27
There were no changes in this release since `v8.0.0-beta.2`. This is just to mark a stable release.
There were no changes in this release since `v8.0.0-beta.2`. This is just to mark a stable release.
@@ -8,24 +299,23 @@ There were no changes in this release since `v8.0.0-beta.2`. This is just to mar
This is an update to the previous beta release, which includes:
This is an update to the previous beta release, which includes:
* Add options for users to share anonymous usage information with us (see [docs](https://redash.io/help/open-source/admin-guide/usage-data) for details).
- Add options for users to share anonymous usage information with us (see [docs](https://redash.io/help/open-source/admin-guide/usage-data) for details).
* Visualizations:
- Visualizations:
- Allow the user to decide how to handle null values in charts.
- Allow the user to decide how to handle null values in charts.
* Upgrade Sentry-SDK to latest version.
- Upgrade Sentry-SDK to latest version.
* Make horizontal table scroll visible in dashboard widgets without scrolling.
- Make horizontal table scroll visible in dashboard widgets without scrolling.
* Data Sources:
- Data Sources:
* Add support for Azure Data Explorer (Kusto).
- Add support for Azure Data Explorer (Kusto).
* MySQL: fix connections without SSL configuration failing.
- MySQL: fix connections without SSL configuration failing.
* Amazon Redshift: option to set query group for adhoc/scheduled queries.
- Amazon Redshift: option to set query group for adhoc/scheduled queries.
* Hive: make error message more friendly.
- Hive: make error message more friendly.
* Qubole: add support to run Quantum queries.
- Qubole: add support to run Quantum queries.
* Display data source icon in query editor.
- Display data source icon in query editor.
* Fix: allow users with view only acces to use the queries in Query Results
- Fix: allow users with view only acces to use the queries in Query Results
* Dashboard: when updating parameters refersh only widgets that use those parameters.
- Dashboard: when updating parameters refersh only widgets that use those parameters.
This release had contributions from 12 people: @arikfr, @cclauss, @gabrieldutra, @justinclift, @kravets-levko, @ranbena, @rauchy, @sandeepV2, @shinsuke-nara, @spacentropy, @sphenlee, @swfz.
This release had contributions from 12 people: @arikfr, @cclauss, @gabrieldutra, @justinclift, @kravets-levko, @ranbena, @rauchy, @sandeepV2, @shinsuke-nara, @spacentropy, @sphenlee, @swfz.
## v8.0.0-beta - 2019-08-18
## v8.0.0-beta - 2019-08-18
After months of being heads down with hard work, it's finally time to wrap up the V8 release 🤩 This release includes many long awaited improvements to parameters, UX improvements, further React migration and other changes, fixes and improvements.
After months of being heads down with hard work, it's finally time to wrap up the V8 release 🤩 This release includes many long awaited improvements to parameters, UX improvements, further React migration and other changes, fixes and improvements.
@@ -39,10 +329,10 @@ This release was made possible by contributions from over 40 people: @aidarbek,
### Parameters
### Parameters
- Parameter UI improvements:
- Parameter UI improvements:
- Support for multi-select in dropdown (and query dropdown) parameters.
- Support for multi-select in dropdown (and query dropdown) parameters.
- Support for dynamic values in date and date-range parameters.
- Support for dynamic values in date and date-range parameters.
- Search dropdown parameter values.
- Search dropdown parameter values.
- New UX for applying parameter changes in queries and dashboards.
- New UX for applying parameter changes in queries and dashboards.
- Allow using Safe Parameters in visualization embeds and public dashboards. Safe Parameters are any parameter type except for the a text parameter (dropdowns are safe).
- Allow using Safe Parameters in visualization embeds and public dashboards. Safe Parameters are any parameter type except for the a text parameter (dropdowns are safe).
### Data Sources
### Data Sources
@@ -52,19 +342,19 @@ This release was made possible by contributions from over 40 people: @aidarbek,
- Snowflake: update connector to latest version.
- Snowflake: update connector to latest version.
- PostgreSQL: show only accessible tables in schema.
- PostgreSQL: show only accessible tables in schema.
- BigQuery:
- BigQuery:
- Correctly handle NaN values.
- Correctly handle NaN values.
- Treat repeated fields as rrays.
- Treat repeated fields as rrays.
- [BigQuery] Fix: in some queries there is no mode field
- [BigQuery] Fix: in some queries there is no mode field
- DynamoDB:
- DynamoDB:
- Support for Unicode in queries.
- Support for Unicode in queries.
- Safe loading of schema.
- Safe loading of schema.
- Rockset: better handling of query errors.
- Rockset: better handling of query errors.
- Google Sheets:
- Google Sheets:
- Support for Team Drive.
- Support for Team Drive.
- Friendlier error message in case of an API error and more reliable test connection.
- Friendlier error message in case of an API error and more reliable test connection.
- MySQL:
- MySQL:
- Support for calling Stored Procedures and better handling of query cancellation.
- Support for calling Stored Procedures and better handling of query cancellation.
- Switch to using `mysqlclient` (a maintained fork of `Python-MySQL`).
- Switch to using `mysqlclient` (a maintained fork of `Python-MySQL`).
- MongoDB: Support serializing Decimal128 values.
- MongoDB: Support serializing Decimal128 values.
- Presto: support for passwords in connection settings.
- Presto: support for passwords in connection settings.
- Amazon Athena: allow to specify custom work group.
- Amazon Athena: allow to specify custom work group.
@@ -75,15 +365,15 @@ This release was made possible by contributions from over 40 people: @aidarbek,
### Visualizations
### Visualizations
- Charts:
- Charts:
- Fix: legend overlapping chart on small screens.
- Fix: legend overlapping chart on small screens.
- Fix: Pie chart not rendering when series doesn't exist in options.
- Fix: Pie chart not rendering when series doesn't exist in options.
- Pie Chart: add option to set direction of slices.
- Pie Chart: add option to set direction of slices.
- WordCloud: rewritten to support new options (provide frequency in query, limits), scale when resizing, handle long words and more.
- WordCloud: rewritten to support new options (provide frequency in query, limits), scale when resizing, handle long words and more.
@@ -4,19 +4,7 @@ Thank you for taking the time to contribute! :tada::+1:
The following is a set of guidelines for contributing to Redash. These are guidelines, not rules, please use your best judgement and feel free to propose changes to this document in a pull request.
The following is a set of guidelines for contributing to Redash. These are guidelines, not rules, please use your best judgement and feel free to propose changes to this document in a pull request.
## Quick Links:
:star: If you're already here and love the project, please make sure to press the Star button. :star:
@@ -39,25 +34,54 @@ The following is a set of guidelines for contributing to Redash. These are guide
When creating a new bug report, please make sure to:
When creating a new bug report, please make sure to:
- Search for existing issues first. If you find a previous report of your issue, please update the existing issue with additional information instead of creating a new one.
- Search for existing issues first. If you find a previous report of your issue, please update the existing issue with additional information instead of creating a new one.
- If you are not sure if your issue is really a bug or just some configuration/setup problem, please start a discussion in [the support forum](https://discuss.redash.io/c/support) first. Unless you can provide clear steps to reproduce, it's probably better to start with a thread in the forum and later to open an issue.
- If you are not sure if your issue is really a bug or just some configuration/setup problem, please start a [Q&A discussion](https://github.com/getredash/redash/discussions/new?category=q-a) first. Unless you can provide clear steps to reproduce, it's probably better to start with a discussion and later to open an issue.
- If you still decide to open an issue, please review the template and guidelines and include as much details as possible.
- If you still decide to open an issue, please review the template and guidelines and include as much details as possible.
### Suggesting Enhancements / Feature Requests
### Suggesting Enhancements / Feature Requests
If you would like to suggest an enhancement or ask for a new feature:
If you would like to suggest an enhancement or ask for a new feature:
- Please check [the forum](https://discuss.redash.io/c/feature-requests/5) for existing threads about what you want to suggest/ask. If there is, feel free to upvote it to signal interest or add your comments.
- Please check [the Ideas discussions](https://github.com/getredash/redash/discussions/categories/ideas) for existing threads about what you want to suggest/ask. If there is, feel free to upvote it to signal interest or add your comments.
- If there is no open thread, you're welcome to start one to have a discussion about what you want to suggest. Try to provide as much details and context as possible and include information about *the problem you want to solve* rather only *your proposed solution*.
- If there is no open thread, you're welcome to start one to have a discussion about what you want to suggest. Try to provide as much details and context as possible and include information about *the problem you want to solve* rather only *your proposed solution*.
### Pull Requests
### Pull Requests
-**Code contributions are welcomed**. For big changes or significant features, it's usually better to reach out first and discuss what you want to implement and how (we recommend reading: [Pull Request First](https://medium.com/practical-blend/pull-request-first-f6bb667a9b6#.ozlqxvj36)). This to make sure that what you want to implement is aligned with our goals for the project and that no one else is already working on it.
**Code contributions are welcomed**. For big changes or significant features, it's usually better to reach out first and discuss what you want to implement and how (we recommend reading: [Pull Request First](https://medium.com/practical-blend/pull-request-first-f6bb667a9b6#.ozlqxvj36)). This is to make sure that what you want to implement is aligned with our goals for the project and that no one else is already working on it.
- Include screenshots and animated GIFs in your pull request whenever possible.
#### Criteria for Review / Merging
When you open your pull request, please follow this repository’s PR template carefully:
- Indicate the type of change
- If you implement multiple unrelated features, bug fixes, or refactors please split them into individual pull requests.
- Describe the change
- If fixing a bug, please describe the bug or link to an existing github issue / forum discussion
- Include UI screenshots / GIFs whenever possible
- Please add [documentation](#documentation) for new features or changes in functionality along with the code.
- Please add [documentation](#documentation) for new features or changes in functionality along with the code.
- Please follow existing code style:
- Please follow existing code style:
- Python: we use [Black](https://github.com/psf/black) to auto format the code.
- Python: we use [Black](https://github.com/psf/black) to auto format the code.
- Javascript: we use [Prettier](https://github.com/prettier/prettier) to auto-format the code.
- Javascript: we use [Prettier](https://github.com/prettier/prettier) to auto-format the code.
#### Initial Review (1 week)
During this phase, a team member will apply the “Team Review” label if a pull request meets our criteria or a “Needs More Information” label if not. If more information is required, the team member will comment which criteria have not been met.
If your pull request receives the “Needs More Information” label, please make the requested changes and then remove the label. This resets the 1 week timer for an initial review.
Stale pull requests that remain untouched in “Needs More Information” for more than 4 weeks will be closed.
If a team member closes your pull request, you may reopen it after you have made the changes requested during initial review. After you make these changes, remove the “Needs More Information” label. This again resets the timer for another initial review.
#### Full Review (2 weeks)
After the “Team Review” label is applied, a member of the core team will review the PR within 2 weeks.
Reviews will approve, request changes, or ask questions to discuss areas of uncertainty. After you’ve responded, a member of the team will re-review within one week.
#### Merging (1 week)
After your pull request has been approved, a member of the core team will merge the pull request within a week.
### Documentation
### Documentation
The project's documentation can be found at [https://redash.io/help/](https://redash.io/help/). The [documentation sources](https://github.com/getredash/website/tree/master/src/pages/kb) are hosted on GitHub. To contribute edits / new pages, you can use GitHub's interface. Click the "Edit on GitHub" link on the documentation page to quickly open the edit interface.
The project's documentation can be found at [https://redash.io/help/](https://redash.io/help/). The [documentation sources](https://github.com/getredash/website/tree/master/src/pages/kb) are hosted on GitHub. To contribute edits / new pages, you can use GitHub's interface. Click the "Edit on GitHub" link on the documentation page to quickly open the edit interface.
**_Redash_** is our take on freeing the data within our company in a way that will better fit our culture and usage patterns.
Redash is designed to enable anyone, regardless of the level of technical sophistication, to harness the power of data big and small. SQL users leverage Redash to explore, query, visualize, and share data fromany data sources. Their work in turn enables anybody in their organization to use the data. Every day, millions of users at thousands of organizations around the world use Redash to develop insights and make data-driven decisions.
Prior to **_Redash_**, we tried to use traditional BI suites and discovered a set of bloated, technically challenged and slow tools/flows. What we were looking for was a more hacker'ish way to look at data, so we built one.
Redash features:
**_Redash_** was built to allow fast and easy access to billions of records, that we process and collect using Amazon Redshift ("petabyte scale data warehouse" that "speaks" PostgreSQL).
1.**Browser-based**: Everything in your browser, with a shareable URL.
Today **_Redash_** has support for querying multiple databases, including: Redshift, Google BigQuery, PostgreSQL, MySQL, Graphite, Presto, Google Spreadsheets, Cloudera Impala, Hive and custom scripts.
2.**Ease-of-use**: Become immediately productive with data without the need to master complex software.
3.**Query editor**: Quickly compose SQL and NoSQL queries with a schema browser and auto-complete.
**_Redash_** consists of two parts:
4.**Visualization and dashboards**: Create [beautiful visualizations](https://redash.io/help/user-guide/visualizations/visualization-types) with drag and drop, and combine them into a single dashboard.
5.**Sharing**: Collaborate easily by sharing visualizations and their associated queries, enabling peer review of reports and queries.
1.**Query Editor**: think of [JS Fiddle](https://jsfiddle.net) for SQL queries. It's your way to share data in the organization in an open way, by sharing both the dataset and the query that generated it. This way everyone can peer review not only the resulting dataset but also the process that generated it. Also it's possible to fork it and generate new datasets and reach new insights.
6.**Schedule refreshes**: Automatically update your charts and dashboards at regular intervals you define.
2.**Visualizations and Dashboards**: once you have a dataset, you can create different visualizations out of it, and then combine several visualizations into a single dashboard. Currently Redash supports charts, pivot table, cohorts and [more](https://redash.io/help/user-guide/visualizations/visualization-types).
7.**Alerts**: Define conditions and be alerted instantly when your data changes.
8.**REST API**: Everything that can be done in the UI is also available through REST API.
9.**Broad support for data sources**: Extensible data source API with native support for a long list of common databases and platforms.
* [Setting up Redash instance](https://redash.io/help/open-source/setup) (includes links to readymade AWS/GCE images).
* [Setting up Redash instance](https://redash.io/help/open-source/setup) (includes links to ready-made AWS/GCE images).
* [Documentation](https://redash.io/help/).
* [Documentation](https://redash.io/help/).
## Supported Data Sources
## Supported Data Sources
Redash supports more than 35 [data sources](https://redash.io/help/data-sources/supported-data-sources).
Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help/data-sources/supported-data-sources). It can also be extended to support more. Below is a list of built-in sources:
* Development Discussion: https://discord.gg/tN5MdmfGBp
## Reporting Bugs and Contributing Code
## Reporting Bugs and Contributing Code
* Want to report a bug or request a feature? Please open [an issue](https://github.com/getredash/redash/issues/new).
* Want to report a bug or request a feature? Please open [an issue](https://github.com/getredash/redash/issues/new).
* Want to help us build **_Redash_**? Fork the project, edit in a [dev environment](https://redash.io/help-onpremise/dev/guide.html), and make a pull request. We need all the help we can get!
* Want to help us build **_Redash_**? Fork the project, edit in a [dev environment](https://github.com/getredash/redash/wiki/Local-development-setup) and make a pull request. We need all the help we can get!
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.