* Handle NotSupported exception in refresh_schema
- Add NotSupported exception handling to refresh_schema()
- Log unsupported datasources at DEBUG level
- Avoid error metrics for datasources without schema support
* Add test for NotSupported exception handling
- Test that NotSupported exceptions are caught and logged at DEBUG level
- Verify no warning logs are generated for unsupported datasources
* Fix import order (ruff)
* Remove test for NotSupported exception handling
As suggested by @yoshiokatsuneo, testing logging details for 3 lines of code
is excessive and may hurt maintainability. The existing tests already ensure
the functionality works correctly.
* fix(destinations): Handle unicode characters in webhook notifications
Previously, webhook notifications would fail if they contained unicode characters in the alert data. This was because the JSON payload was not UTF-8 encoded before being sent.
This commit fixes the issue by explicitly encoding the JSON data to UTF-8 and adds a test to verify the fix.
* move test function to new file
---------
Co-authored-by: gaojingyu <gaojingyu>
Add support for saving dashboard parameters after clicking the Apply button. Parameters are applied in the following order: URL, dashboard parameters, query parameters.
Persist the queued values only when “Done Editing” is clicked, keeping Query and Dashboard editors aligned.
* Add ibm-db package to enable DB2 as datasource:
* Review poetry format
* Added condition on platform for ibm-db, as support is restricted
---------
Co-authored-by: nicof38 <nicolas@FB-L-230557.soitec.net>
Co-authored-by: Tsuneo Yoshioka <yoshiokatsuneo@gmail.com>
* 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
@@ -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
## v9.0.0-beta - 2020-06-11
This release was long time in the making and has several major changes:
This release was long time in the making and has several major changes:
@@ -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 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 from any 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.
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 from any 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.
@@ -32,48 +31,71 @@ Redash features:
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:
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:
- Amazon Athena
- Amazon Athena
- Amazon CloudWatch / Insights
- Amazon DynamoDB
- Amazon DynamoDB
- Amazon Redshift
- Amazon Redshift
- ArangoDB
- Axibase Time Series Database
- Axibase Time Series Database
- Cassandra
- Apache Cassandra
- ClickHouse
- ClickHouse
- CockroachDB
- CockroachDB
- Couchbase
- CSV
- CSV
- Databricks (Apache Spark)
- Databricks
- DB2 by IBM
- DB2 by IBM
- Druid
- Dgraph
- Apache Drill
- Apache Druid
- e6data
- Eccenca Corporate Memory
- Elasticsearch
- Elasticsearch
- Exasol
- Microsoft Excel
- Firebolt
- Databend
- Google Analytics
- Google Analytics
- Google BigQuery
- Google BigQuery
- Google Spreadsheets
- Google Spreadsheets
- Graphite
- Graphite
- Greenplum
- Greenplum
- Hive
- Apache Hive
- Impala
- Apache Impala
- InfluxDB
- InfluxDB
-JIRA
-InfluxDBv2
- IBM Netezza Performance Server
- JIRA (JQL)
- JSON
- JSON
- Apache Kylin
- Apache Kylin
- OmniSciDB (Formerly MapD)
- OmniSciDB (Formerly MapD)
- MariaDB
- MemSQL
- MemSQL
- Microsoft Azure Data Warehouse / Synapse
- Microsoft Azure Data Warehouse / Synapse
- Microsoft Azure SQL Database
- Microsoft Azure SQL Database
- Microsoft Azure Data Explorer / Kusto
- Microsoft SQL Server
- Microsoft SQL Server
- MongoDB
- MongoDB
- MySQL
- MySQL
- Oracle
- Oracle
- Apache Phoenix
- Apache Pinot
- PostgreSQL
- PostgreSQL
- Presto
- Presto
- Prometheus
- Prometheus
- Python
- Python
- Qubole
- Qubole
- Rockset
- Rockset
- RisingWave
- Salesforce
- Salesforce
- ScyllaDB
- ScyllaDB
- Shell Scripts
- Shell Scripts
- Snowflake
- Snowflake
- SPARQL
- SQLite
- SQLite
- TiDB
- Tinybird
- TreasureData
- TreasureData
- Trino
- Uptycs
- Vertica
- Vertica
- Yandex AppMetrrica
- Yandex AppMetrrica
- Yandex Metrica
- Yandex Metrica
@@ -81,12 +103,13 @@ Redash supports more than 35 SQL and NoSQL [data sources](https://redash.io/help
* 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!
// if we see a javascript error on unexpected token where the unexpected token is '<', this usually means that a fallback html file (like index.html)
// was served as content of script rather than the expected script, give a friendlier message in the console on what could be going on
console.error(
`[Uncaught SyntaxError: Unexpected token '<'] usually means that a fallback html file was returned from server rather than the expected script. Check that the server is properly serving the file ${event.filename}.`
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.