Compare commits

...
Author SHA1 Message Date
Kartik Khare 270fd32a29 Fix: Missing time series datapoints in druid show up as absurd values in line chart (#8271)
* Adding support for filter box in annotations

* Fixing tox lint errors

* fixing lint errors

* superset should skip empty time buckets

* removing whitespace
2019-09-27 21:22:13 +03:00
kuckjwi 779976e18f Fixed korean translation error. (#8265) 2019-09-27 21:21:23 +03:00
Yongjie Zhao cc023a41bb Fix sync failed when datasource is schema-less (#8223) 2019-09-27 21:20:51 +03:00
Erik Ritter 078af1173a [SQL Lab] Fix bug when filtering on results that include nulls (#8231) 2019-09-27 21:20:03 +03:00
Paul Vickers 40cea5442c Bump flask-appbuilder to 2.1.13 (#8174)
* Bump flask-appbuilder to 2.1.12

To pick up this fix https://github.com/dpgaspar/Flask-AppBuilder/pull/1095 which addresses https://github.com/apache/incubator-superset/issues/7739

* Bump FAB again to 2.1.13
2019-09-27 21:15:23 +03:00
Daniel Vaz Gaspar 49bba75ebb Bump FAB to 2.1.13 (#8176)
* Bump FAB to 2.1.13

* [SQLLab] dummy commit

* [SQLLab] remove dummy commit

* [SQLLab] test

* [SQLLab] bump back to 13
2019-09-27 21:10:56 +03:00
Daniel Vaz Gaspar e81f3746d2 [examples] Fix, sf population polygons div by zero error (#8209) 2019-09-27 21:08:57 +03:00
Grace Guo a8576aad48 [Explore view] Fix extra data fetch when user clicks Run Query (#8070) 2019-09-27 18:01:16 +03:00
Michelle Thomas aaed4a7787 updating version to 0.34.1 2019-09-19 12:01:38 -07:00
Grace Guo 30ded7ddaa [sql lab] persist tables list in localStorage (#8054)
* [sql lab] persist tables list in localStorage

* persist ediotor panel size setting

(cherry picked from commit 51bd34704c)
2019-09-19 11:59:44 -07:00
Erik Ritter 301211b5ab Revert "Fixed Histogram visualization bug. (#8077)" (#8145)
This reverts commit 7ac1a290eb.
2019-09-08 17:04:12 +02:00
Maxime Beauchemin eb3cb95574 fix: issues #8041 - bubble support for complex metrics (#8044) 2019-09-08 16:13:41 +02:00
Evan Rusackas 7ca58f0212 adding spaces missing from string concatenations (#8126) 2019-09-08 16:09:17 +02:00
John Bodley 9e6c0ab7a7 Update core.py (#8191) 2019-09-08 16:07:45 +02:00
Tom Hunter 7326f37167 [feat] Add d3 legend formatting for Arc, Polygon and Scatter deck.gl maps (#7951)
* Legend formatting for Arc, Polygon and Scatter

* fix typo

* refactor from d3-format to superset-ui
2019-09-08 10:39:51 +02:00
Ville Brofeldt 92481b7b7e [bugfix] Correctly quote table and schema in select_star (#8181)
* Fix select_star table quoting bug

* Add unit test for fully qualified names in select_star

* Rename main_db to db

* Rename test function
2019-09-08 10:25:38 +02:00
Ville Brofeldt c5249cefb9 Make orderby native sqla construct (#8180) 2019-09-08 10:25:13 +02:00
Ville Brofeldt 3136af1236 [bugfix] fix timegrain addon regression (#8165)
* Fix regression in time grain addons

* Revert privatization of time_grain_functions

* Fix test

* Rename variable

* Fix test

* Fix typing error

* Refactor and add tests

* Add TODO
2019-09-08 10:24:42 +02:00
Ville Brofeldt a8b054846b Add check for calls to cache_key_wrapper (#8128)
* Add check for calls to cache_key_wrapper to avoid unavoidable compilation of query

* Add fetch_values_predicate to check

* Only check relevant attributes

* Address nit
2019-09-08 10:17:10 +02:00
ericandrewmeadows 20a059547a Fix to Werkzeug ProxyFix; expose ProxyFix configuration items (#8117)
* Fix to werkzeug proxy; expose additional configuration items

* Forced to all x-forwarded configurations ON; black done

* added comments related to x_port after testing

* Updated UPDATING.md

* Removed accidental notebook; added *.ipynb to gitignore

* Delete Untitled-checkpoint.ipynb
2019-09-08 10:14:24 +02:00
kuckjwi 4e49b8f393 Fixed Histogram visualization bug. (#8077)
* Fix HistogramViz bug.

* Fix ci black error.
2019-09-08 10:10:49 +02:00
michellethomas 6f6e068c7c Set disableErrorBoundary in SuperChart to fix chart error handling (#8052) 2019-09-08 10:09:57 +02:00
Maxime Beauchemin 08f19f1dfb fix: onSave datasource raises React error (#8049)
* fix: datasource save raises React error

* add test
2019-09-08 10:09:16 +02:00
serenajiang 66340f1ad9 fix: handle case where result exists but corresponding query cannot be found (#8037)
* fix: handle case where result exists but query cannot be found

* changed error code to 404 for query not found
2019-09-08 10:08:50 +02:00
Ville Brofeldt f85ba81c51 [bugfix] Fix deck_polygon metric bug and update examples chart (#8025)
* Fix deck_polygon bug and update examples chart

* Change js elevation to native ad-hoc metric

* Move scale from metric to native multiplier

* Remove redundant js_columns and change color scheme
2019-09-08 10:08:27 +02:00
Grace Guo 85f959f6e0 [fix] Allow dashboard viewer auto refresh dashboard (#8014) 2019-09-08 10:07:52 +02:00
Arthur P de21a7f196 Fix: There was an issue fetching the favorite status of this dashboard #6824 (#8013)
Issue: When Superset is running behind a reverse proxy and the dashboard page is requested with HTTPS protocol, the frontend can't retrieve the favorite status of the dashboard and, instead, displays the following toast message: 'There was an issue fetching the favorite status of this dashboard.'

Cause: While the API exposes the /favestar/Dashboard/{id}/count/ endpoint, the frontend executes an API call to /favestar/Dashboard/{id}/count, which leads to a redirect to an endpoint with HTTP protocol

Fix: Call the correct endpoint
2019-09-08 10:06:32 +02:00
Maxime Beauchemin 20e68c8740 Set version to 0.34.0 (no rcN) 2019-08-22 23:28:18 -07:00
Maxime Beauchemin 6acd25d12c fix: minor release/license related issues (#8087)
(cherry picked from commit 279307c602)
2019-08-22 23:28:18 -07:00
Maxime Beauchemin a13fb1d2e1 CHANGELOG for 0.30...0.34 (#8089)
(cherry picked from commit 763af85d04)
2019-08-22 23:28:18 -07:00
Maxime Beauchemin a04fad8586 0.34.0rc1 2019-08-08 17:58:10 -07:00
66 changed files with 1651 additions and 2110577 deletions
+1
View File
@@ -14,6 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
*.ipynb
*.bak
*.db
*.pyc
+822 -112
View File
@@ -18,125 +18,835 @@ under the License.
-->
## Change Log
### 0.29.0rc8 (2019/01/29 21:37:21 +00:00)
- [#6765](https://github.com/apache/incubator-superset/pull/6765) [fix] `pandas`>=0.24.0 datetimelike API changes (#6765)(@zihengCat)
### 0.34.0 (2019/08/09 00:58 +00:00)
- [#7997](https://github.com/apache/incubator-superset/pull/7997) Event logger config takes instance instead of class (#7997) (@DiggidyDave)
- [#8006](https://github.com/apache/incubator-superset/pull/8006) Local config no longer fails to import silently (#8006) (@DiggidyDave)
- [#8002](https://github.com/apache/incubator-superset/pull/8002) [SQLLab] Fix, database api unlimited page size v2 (#8002) (@dpgaspar)
- [#7999](https://github.com/apache/incubator-superset/pull/7999) Setup FOSSA as part of CI (#7999) (@mistercrunch)
- [#7949](https://github.com/apache/incubator-superset/pull/7949) Update to fix the broken blueprints link (#7949) (@mmutiso)
- [#7981](https://github.com/apache/incubator-superset/pull/7981) Fix Pandas 0.24 DateOffset bug pt. 2 (#7981) (@villebro)
- [#7993](https://github.com/apache/incubator-superset/pull/7993) [Jinja] Make Presto template functions backwards compatible (#7993) (@etr2460)
- [#7998](https://github.com/apache/incubator-superset/pull/7998) [fix] reduce content in sql lab localStorage (#7998) (@graceguo-supercat)
- [#7985](https://github.com/apache/incubator-superset/pull/7985) Fix #7984 (#7985) (@mistercrunch)
- [#7986](https://github.com/apache/incubator-superset/pull/7986) Revert "Bump FAB to 2.1.8 (#7986)" (#7996) (@etr2460)
- [#7987](https://github.com/apache/incubator-superset/pull/7987) Revert "[database] Fix, Removes the limit for the page size (#7987)" (#7995) (@etr2460)
- [#7994](https://github.com/apache/incubator-superset/pull/7994) Bump nvd3 charts for tooltip fix (#7994) (@etr2460)
- [#7992](https://github.com/apache/incubator-superset/pull/7992) [init] Setting up cache before registering blueprints (#7992) (@john-bodley)
- [#7989](https://github.com/apache/incubator-superset/pull/7989) Bump @superset-ui versions (#7989) (@kristw)
- [#7987](https://github.com/apache/incubator-superset/pull/7987) [database] Fix, Removes the limit for the page size (#7987) (@dpgaspar)
- [#7986](https://github.com/apache/incubator-superset/pull/7986) Bump FAB to 2.1.8 (#7986) (@dpgaspar)
- [#7988](https://github.com/apache/incubator-superset/pull/7988) [flake8] Ignoring I202 (#7988) (@john-bodley)
- [#7977](https://github.com/apache/incubator-superset/pull/7977) [DB Engine] Support old and new Presto syntax (#7977) (@etr2460)
- [#7952](https://github.com/apache/incubator-superset/pull/7952) [security] Adding docstrings and type hints (#7952) (@john-bodley)
- [#7963](https://github.com/apache/incubator-superset/pull/7963) Remove collation info from MSSQL column type (#7963) (@villebro)
- [#7973](https://github.com/apache/incubator-superset/pull/7973) Bump sqlparse to 0.3.0 (#7973) (@villebro)
- [#7975](https://github.com/apache/incubator-superset/pull/7975) Fix for new Pandas API (#7975) (@betodealmeida)
- [#7643](https://github.com/apache/incubator-superset/pull/7643) 7620: Start removing dependencies on requests (#7643) (@sturmer)
- [#7965](https://github.com/apache/incubator-superset/pull/7965) Bump python requirements file (#7965) (@villebro)
- [#7964](https://github.com/apache/incubator-superset/pull/7964) Use python3 for black to support py>=3.6 (#7964) (@villebro)
- [#7955](https://github.com/apache/incubator-superset/pull/7955) Fix createDatasource (#7955) (@betodealmeida)
- [#7858](https://github.com/apache/incubator-superset/pull/7858) [fix] Isolate and improve performance on tagging system (#7858) (@betodealmeida)
- [#7943](https://github.com/apache/incubator-superset/pull/7943) Update .travis.yml (#7943) (@john-bodley)
- [#7932](https://github.com/apache/incubator-superset/pull/7932) Bump nvd3 chart plugin (#7932) (@etr2460)
- [#7924](https://github.com/apache/incubator-superset/pull/7924) [fix] bug on FixedOrMetricControl component causing issues with deck.gl polygon height + deck.gl scatter radius controls (#7924) (@thunter009)
- [#7935](https://github.com/apache/incubator-superset/pull/7935) [feature flag] Enforce csrf protection on explore_json endpoint (#7935) (@graceguo-supercat)
- [#7940](https://github.com/apache/incubator-superset/pull/7940) fixing error related to install codecove in travis (#7940) (@blcksrx)
- [#7933](https://github.com/apache/incubator-superset/pull/7933) [revert] Partial revert of #7888 (#7933) (@john-bodley)
- [#7918](https://github.com/apache/incubator-superset/pull/7918) [cli] New, command line option to create or set a db URI (#7918) (@dpgaspar)
- [#7926](https://github.com/apache/incubator-superset/pull/7926) Fix #7130 - SQL Lab table name autocomplete (#7926) (@mistercrunch)
- [#7920](https://github.com/apache/incubator-superset/pull/7920) [log] Disable Log view when FAB security views are disabled (#7920) (@dpgaspar)
- [#7930](https://github.com/apache/incubator-superset/pull/7930) [sqllab] Fix, #7928 query async not working (#7930) (@dpgaspar)
- [#7931](https://github.com/apache/incubator-superset/pull/7931) Fixing the build after travis upgraded Ubuntu (#7931) (@mistercrunch)
- [#7895](https://github.com/apache/incubator-superset/pull/7895) [dashboard] fix chart showing loading icon when filter updated immuned fields (#7895) (@graceguo-supercat)
- [#7864](https://github.com/apache/incubator-superset/pull/7864) [Profile] Fix 5xx when user not found (#7864) (@etr2460)
- [#7912](https://github.com/apache/incubator-superset/pull/7912) [sqllab] Fix limit parsing bug when using limit-offset comma notation (#7912) (@villebro)
- [#7896](https://github.com/apache/incubator-superset/pull/7896) [Bugfix] Remove prequery properties from query_obj (#7896) (@villebro)
- [#7892](https://github.com/apache/incubator-superset/pull/7892) Fix incorrect datasource_name in dashboard export (#7892) (@smacker)
- [#7894](https://github.com/apache/incubator-superset/pull/7894) Set owner to dashboards and charts on import (#7894) (@smacker)
- [#7665](https://github.com/apache/incubator-superset/pull/7665) [api] [database] New, migrate to new FAB API side by side (#7665) (@dpgaspar)
- [#7880](https://github.com/apache/incubator-superset/pull/7880) [migration] add unique constraint on dashboard_slices table (#7880) (@graceguo-supercat)
- [#7915](https://github.com/apache/incubator-superset/pull/7915) Bump nvd3 charts for responsive y axis fix (#7915) (@etr2460)
- [#7868](https://github.com/apache/incubator-superset/pull/7868) [SQL Lab] Fix TableSelector perf for large option sets (#7868) (@etr2460)
- [#7907](https://github.com/apache/incubator-superset/pull/7907) [Bugfix] Response header and response mismatch on explore result from sqllab (#7907) (@arpit-agarwal)
- [#7816](https://github.com/apache/incubator-superset/pull/7816) Add cache_key_wrapper to Jinja template processor (#7816) (@villebro)
- [#7898](https://github.com/apache/incubator-superset/pull/7898) [test] Fix test data remove slice_name (#7898) (@graceguo-supercat)
- [#7897](https://github.com/apache/incubator-superset/pull/7897) [fix] Adding space after -- for SQL comments (#7897) (@john-bodley)
- [#7744](https://github.com/apache/incubator-superset/pull/7744) Fix missing `gevent` extra dependency in Docker setup (#7744) (@bmfs)
- [#7888](https://github.com/apache/incubator-superset/pull/7888) [sqla] Adding check for invalid filter columns (#7888) (@john-bodley)
- [#7883](https://github.com/apache/incubator-superset/pull/7883) Sort dashboards exported json (#7883) (@smacker)
- [#7879](https://github.com/apache/incubator-superset/pull/7879) Remove unnecessary fields from dashboard exported json (#7879) (@smacker)
- [#7882](https://github.com/apache/incubator-superset/pull/7882) Corrected ISO codes on India Country Map (#7882) (@TheLastSultan)
- [#7881](https://github.com/apache/incubator-superset/pull/7881) [sql lab] improve TableElement controls (#7881) (@mistercrunch)
- [#7773](https://github.com/apache/incubator-superset/pull/7773) Improve examples & related tests (#7773) (@mistercrunch)
- [#7877](https://github.com/apache/incubator-superset/pull/7877) Avoid removing custom sql adhoc metric when columns change (#7877) (@michellethomas)
- [#7827](https://github.com/apache/incubator-superset/pull/7827) Fix docker configurations and docker installation guide. (#7827) (@ali-bahjati)
- [#7863](https://github.com/apache/incubator-superset/pull/7863) DruidEngineSpec: set allows_subquery to True (#7863) (@michalmisiewicz)
- [#7878](https://github.com/apache/incubator-superset/pull/7878) fix: add check to re-render only if underlying layers change (#7878) (@thunter009)
- [#7875](https://github.com/apache/incubator-superset/pull/7875) bug fix for all_database_access() call (#7875) (@rahul-rahul-sp)
- [#7872](https://github.com/apache/incubator-superset/pull/7872) [docs] Advise about celery 4.3.0 requirement on redis (#7872) (@dpgaspar)
- [#7853](https://github.com/apache/incubator-superset/pull/7853) [cypress] Disable chromeWebSecurity globally (#7853) (@graceguo-supercat)
- [#7852](https://github.com/apache/incubator-superset/pull/7852) Bump pandas to 0.24 (#7852) (@villebro)
- [#7866](https://github.com/apache/incubator-superset/pull/7866) [wip] fix: multi deck.gl bug fixes (pt 2) (#7866) (@thunter009)
- [#7867](https://github.com/apache/incubator-superset/pull/7867) Update tox.ini (#7867) (@john-bodley)
- [#7856](https://github.com/apache/incubator-superset/pull/7856) Adds the ability to replace/extend caching backend (#7856) (@robdiciuccio)
- [#7854](https://github.com/apache/incubator-superset/pull/7854) fix: multi deck.gl bug fixes (#7854) (@thunter009)
- [#7845](https://github.com/apache/incubator-superset/pull/7845) Make SHOW_STACKTRACE config apply across the board (#7845) (@mistercrunch)
- [#7848](https://github.com/apache/incubator-superset/pull/7848) [celery] Bump celery to 4.3.0 (#7848) (@dpgaspar)
- [#7850](https://github.com/apache/incubator-superset/pull/7850) Update down_revision to fix migrations (#7850) (@1AB9502)
- [#7843](https://github.com/apache/incubator-superset/pull/7843) Quick fix (#7843) (@betodealmeida)
- [#4725](https://github.com/apache/incubator-superset/pull/4725) Add "Published" feature to dashboards (#4725) (@Tresdon)
- [#7835](https://github.com/apache/incubator-superset/pull/7835) Update requirements.txt (#7835) (@john-bodley)
- [#7728](https://github.com/apache/incubator-superset/pull/7728) * hacky string coercion to fix bug in cli datasource export (#7728) (@Aylr)
- [#7717](https://github.com/apache/incubator-superset/pull/7717) Refactor testconn to use get_sqla_engine (#7717) (@thoralf-gutierrez)
- [#7837](https://github.com/apache/incubator-superset/pull/7837) Updating superset-ui/legacy-preset-chart-nvd3 to 0.10.35 (#7837) (@michellethomas)
- [#7830](https://github.com/apache/incubator-superset/pull/7830) Set up a few more pre-commit hook (#7830) (@mistercrunch)
- [#7705](https://github.com/apache/incubator-superset/pull/7705) [log] New, make action log configurable and generic (#7705) (@dpgaspar)
- [#7832](https://github.com/apache/incubator-superset/pull/7832) Bump FAB to 2.1.6 (#7832) (@dpgaspar)
- [#7817](https://github.com/apache/incubator-superset/pull/7817) Add missing 'babies.png' image (#7817) (@mistercrunch)
- [#7376](https://github.com/apache/incubator-superset/pull/7376) Fixing the examples (#7376) (@mistercrunch)
- [#7821](https://github.com/apache/incubator-superset/pull/7821) Add source{d} to user list in README.md (#7821) (@marnovo)
- [#7539](https://github.com/apache/incubator-superset/pull/7539) Improvements related to ASF release process (#7539) (@mistercrunch)
- [#7747](https://github.com/apache/incubator-superset/pull/7747) fix: unicode word cloud example (#7747) (@mistercrunch)
- [#7796](https://github.com/apache/incubator-superset/pull/7796) Added possibility to translate the phrase 'No results found' in FilterBox (#7796) (@dserkowski)
- [#7621](https://github.com/apache/incubator-superset/pull/7621) fix: Better error message for dashboard import (#7621) (@smacker)
- [#7812](https://github.com/apache/incubator-superset/pull/7812) [dashboard] Fix URLShortLinkButton position after click anchor link (#7812) (@graceguo-supercat)
- [#7653](https://github.com/apache/incubator-superset/pull/7653) [schema] Deprecating the table_columns.database_expression column (#7653) (@john-bodley)
- [#7810](https://github.com/apache/incubator-superset/pull/7810) Add second and minute grains (#7810) (@villebro)
- [#7813](https://github.com/apache/incubator-superset/pull/7813) Improve documentation (#7813) (@villebro)
- [#7799](https://github.com/apache/incubator-superset/pull/7799) [fix] Updating Pandas resample logic (#7799) (@john-bodley)
- [#7502](https://github.com/apache/incubator-superset/pull/7502) Add Table List Refresh Button (#7502) (@MarcusSorealheis)
- [#7809](https://github.com/apache/incubator-superset/pull/7809) [travis] Adding Black tox environment (#7809) (@john-bodley)
- [#7325](https://github.com/apache/incubator-superset/pull/7325) [Viz] transpose pivot table (#7325) (@zhaoyongjie)
- [#7435](https://github.com/apache/incubator-superset/pull/7435) Update messages.json (#7435) (@JesusEkie)
- [#7770](https://github.com/apache/incubator-superset/pull/7770) Autocomplete in the table browser in SQL lab is broken - Fix part 2 (#7770) (@khtruong)
- [#7755](https://github.com/apache/incubator-superset/pull/7755) [fix] Handling of non-existent datasource (#7755) (@john-bodley)
- [#7791](https://github.com/apache/incubator-superset/pull/7791) Improve performance for add slice container (#7791) (@etr2460)
- [#7801](https://github.com/apache/incubator-superset/pull/7801) add new user (#7801) (@pokyu)
- [#7777](https://github.com/apache/incubator-superset/pull/7777) Truncate data that is expanded (#7777) (@betodealmeida)
- [#7783](https://github.com/apache/incubator-superset/pull/7783) [SQL Lab] Add hard time limit fallback for async queries (#7783) (@etr2460)
- [#7788](https://github.com/apache/incubator-superset/pull/7788) Fix SQL editor tooltip to not cut off long column names (#7788) (@cguan7)
- [#7467](https://github.com/apache/incubator-superset/pull/7467) Change kv content-type to text/plain (#7467) (@rahul-rahul-sp)
- [#7787](https://github.com/apache/incubator-superset/pull/7787) Updating legacy-plugin-chart-heatmap to fix an issue with heatmap (#7787) (@michellethomas)
- [#7782](https://github.com/apache/incubator-superset/pull/7782) feat: query based on all partitions (#7782) (@khtruong)
- [#7767](https://github.com/apache/incubator-superset/pull/7767) bugfix: Oracle timegrains fail to render when wrapped in outer query (#7767) (@villebro)
- [#7769](https://github.com/apache/incubator-superset/pull/7769) [format] Using Black (#7769) (@john-bodley)
- [#7753](https://github.com/apache/incubator-superset/pull/7753) [testconn] Fixing response (#7753) (@john-bodley)
- [#7764](https://github.com/apache/incubator-superset/pull/7764) Show generic error msg and hide stacktrace if feature flag is enabled (#7764) (@rahul-rahul-sp)
- [#7605](https://github.com/apache/incubator-superset/pull/7605) chore: taking db dependencies out of requirements-dev.txt (#7605) (@mistercrunch)
- [#7749](https://github.com/apache/incubator-superset/pull/7749) Fix deck.gl sample charts with js (#7749) (@villebro)
- [#7011](https://github.com/apache/incubator-superset/pull/7011) fix(filterbox): fixed runtime exception in filterbox for allow multiple selection is false (#7011) (@jitendra-kumawat)
- [#7756](https://github.com/apache/incubator-superset/pull/7756) Add csv upload support for BigQuery (#7756) (@villebro)
- [#7724](https://github.com/apache/incubator-superset/pull/7724) [security] [ui] Make security views use superset's list widget (#7724) (@dpgaspar)
- [#7750](https://github.com/apache/incubator-superset/pull/7750) Bump FAB to 2.1.5 (#7750) (@dpgaspar)
- [#7720](https://github.com/apache/incubator-superset/pull/7720) [SQL Lab] Add JSON modal when clicking on cells with JSON objects (#7720) (@etr2460)
- [#7745](https://github.com/apache/incubator-superset/pull/7745) [fix] Force refresh table list broken (#7745) (@betodealmeida)
- [#7736](https://github.com/apache/incubator-superset/pull/7736) Revert "Autocomplete in the table browser in SQL lab is broken (#7736)" (#7743) (@khtruong)
- [#7736](https://github.com/apache/incubator-superset/pull/7736) Autocomplete in the table browser in SQL lab is broken (#7736) (@khtruong)
- [#7646](https://github.com/apache/incubator-superset/pull/7646) compile column names (#7646) (@villebro)
- [#7722](https://github.com/apache/incubator-superset/pull/7722) [SQL Lab] Polish side pane animation (#7722) (@etr2460)
- [#7616](https://github.com/apache/incubator-superset/pull/7616) Fixing time comparison to look for past deltas (#7616) (@michellethomas)
- [#7729](https://github.com/apache/incubator-superset/pull/7729) Bump sqla to 1.3.5 (#7729) (@villebro)
- [#7652](https://github.com/apache/incubator-superset/pull/7652) Allowing withVerification to remove all options if none are valid (#7652) (@michellethomas)
- [#7679](https://github.com/apache/incubator-superset/pull/7679) css: add margin-top to ResultSet (#7679) (@mistercrunch)
- [#7723](https://github.com/apache/incubator-superset/pull/7723) [CSV Upload] Fix Index Column input filter (#7723) (@etr2460)
- [#7700](https://github.com/apache/incubator-superset/pull/7700) [dashboard] fix nested tab component visible logic (#7700) (@graceguo-supercat)
- [#7709](https://github.com/apache/incubator-superset/pull/7709) [docker] Fix docker-init missing FLASK_APP (#7709) (@dpgaspar)
- [#7701](https://github.com/apache/incubator-superset/pull/7701) Update @superset-ui/legacy-preset-chart-nvd3 (#7701) (@etr2460)
- [#7696](https://github.com/apache/incubator-superset/pull/7696) [docs] Fix, flask fab cli does not need app parameter (#7696) (@dpgaspar)
- [#7691](https://github.com/apache/incubator-superset/pull/7691) [SQL Lab] Fix proptypes warning (#7691) (@etr2460)
- [#7693](https://github.com/apache/incubator-superset/pull/7693) Render columns dynamically on wide tables (#7693) (@betodealmeida)
- [#7687](https://github.com/apache/incubator-superset/pull/7687) Add Intercom to Superset users (#7687) (@kate-gallo)
- [#7688](https://github.com/apache/incubator-superset/pull/7688) Adding 6play as users (#7688) (@CoryChaplin)
- [#7667](https://github.com/apache/incubator-superset/pull/7667) [epoch] Remove non-UTC epoch logic (#7667) (@john-bodley)
- [#7672](https://github.com/apache/incubator-superset/pull/7672) Update index.rst (#7672) (@john-bodley)
- [#7678](https://github.com/apache/incubator-superset/pull/7678) Revert "Allow bigint to be used as time column in Presto" #7670 (#7678) (@john-bodley)
- [#7073](https://github.com/apache/incubator-superset/pull/7073) [connectors] Make cluster/database and datasource/table unselectable in CRUD view (#7073) (@john-bodley)
- [#7598](https://github.com/apache/incubator-superset/pull/7598) adding command for seeing changes reflected. (#7598) (@MarcusSorealheis)
- [#7478](https://github.com/apache/incubator-superset/pull/7478) Bump FAB to 2.1.4 (#7478) (@dpgaspar)
- [#7526](https://github.com/apache/incubator-superset/pull/7526) Fixed SQL Lab Query Search scrolling issue(#7526) (#7674) (@rusackas)
- [#7676](https://github.com/apache/incubator-superset/pull/7676) Break up db_engine_specs (#7676) (@villebro)
- [#7392](https://github.com/apache/incubator-superset/pull/7392) Remove duplicate paragraph in celery tasks documentation (#7392) (@thoralf-gutierrez)
- [#7567](https://github.com/apache/incubator-superset/pull/7567) Add epoch funcs for BigQuery (#7567) (@villebro)
- [#7641](https://github.com/apache/incubator-superset/pull/7641) [SQL Lab] Clarify SQL Lab query and display limits (#7641) (@etr2460)
- [#7642](https://github.com/apache/incubator-superset/pull/7642) [dashboard] pass dashboard filters to share chart url in dropdown (#7642) (@graceguo-supercat)
- [#7572](https://github.com/apache/incubator-superset/pull/7572) [SQL Lab] Show warning when user used up localStorage (#7572) (@graceguo-supercat)
- [#7610](https://github.com/apache/incubator-superset/pull/7610) docs: Add Tenable to the List of Users (#7610) (@dflionis)
- [#7475](https://github.com/apache/incubator-superset/pull/7475) Apply DashboardFilter to the dashboards in SliceModeView (#7475) (@rahul-rahul-sp)
- [#7638](https://github.com/apache/incubator-superset/pull/7638) Add new escape characters to OnPasteSelect (#7638) (@1AB9502)
- [#7660](https://github.com/apache/incubator-superset/pull/7660) [docs] Fix, deprecate fabmanager cli (#7660) (@dpgaspar)
- [#5096](https://github.com/apache/incubator-superset/pull/5096) Revert "Boxplot should not require a datetime column (#5096)" (#7655) (@khtruong)
- [#7175](https://github.com/apache/incubator-superset/pull/7175) [SQL Lab] CTAS now uses the right async configuration (#7175) (@enricoberti)
- [#7647](https://github.com/apache/incubator-superset/pull/7647) [Profile] Fix react gravitar size prop type warning (#7647) (@etr2460)
- [#7618](https://github.com/apache/incubator-superset/pull/7618) Add Filter on DatabaseView that filters DBs Based on Role Access (#7618) (@dflionis)
- [#7640](https://github.com/apache/incubator-superset/pull/7640) [dashboard] click tab anchor link (#7640) (@graceguo-supercat)
- [#7632](https://github.com/apache/incubator-superset/pull/7632) Fix colors in ellipsis (#7632) (@betodealmeida)
- [#7433](https://github.com/apache/incubator-superset/pull/7433) Adding codecov targets and thresholds (#7433) (@michellethomas)
- [#7490](https://github.com/apache/incubator-superset/pull/7490) [fix] SQL parsing of table names (#7490) (@john-bodley)
- [#7494](https://github.com/apache/incubator-superset/pull/7494) make filter_values() macro to properly accept value from filter box with single value setting (#7494) (@jimhorng)
- [#7606](https://github.com/apache/incubator-superset/pull/7606) fix: SqlaColumn.type overflow on mysql (#7606) (@mistercrunch)
- [#7636](https://github.com/apache/incubator-superset/pull/7636) [query] Fix, remove not possible to order columns (#7636) (@dpgaspar)
- [#7635](https://github.com/apache/incubator-superset/pull/7635) Fixed Time Grain and Added Drill to README (#7635) (@cgivre)
- [#7593](https://github.com/apache/incubator-superset/pull/7593) fix: address issue #7458 (#7593) (@mistercrunch)
- [#7561](https://github.com/apache/incubator-superset/pull/7561) [FAB] set AppBuilder to update_perms=False (#7561) (@mistercrunch)
- [#7575](https://github.com/apache/incubator-superset/pull/7575) Alternative fix for #7559 (#7575) (@mistercrunch)
- [#7633](https://github.com/apache/incubator-superset/pull/7633) Wrapping up #7130 (#7633) (@mistercrunch)
- [#7617](https://github.com/apache/incubator-superset/pull/7617) Allow trailing spaces in simple filter values (#7617) (@etr2460)
- [#7622](https://github.com/apache/incubator-superset/pull/7622) [requirements] Bumping pydruid version (#7622) (@john-bodley)
- [#7624](https://github.com/apache/incubator-superset/pull/7624) [SQL Lab] Prevent failed query error from disappearing (#7624) (@etr2460)
- [#7628](https://github.com/apache/incubator-superset/pull/7628) [SQL Lab] Old query showing success state but not showing results (#7628) (@graceguo-supercat)
- [#7583](https://github.com/apache/incubator-superset/pull/7583) Update bug_report.md (#7583) (@john-bodley)
- [#7630](https://github.com/apache/incubator-superset/pull/7630) fix: handle presto columns with whitespace (#7630) (@khtruong)
- [#7625](https://github.com/apache/incubator-superset/pull/7625) View Presto row and array objects clearly in the data grid (#7625) (@khtruong)
- [#7627](https://github.com/apache/incubator-superset/pull/7627) Show expanded columns in gray in SQL Editor (#7627) (@betodealmeida)
- [#7525](https://github.com/apache/incubator-superset/pull/7525) Add relative start param for time filters (#7525) (@villebro)
- [#7594](https://github.com/apache/incubator-superset/pull/7594) [SQL Lab] fix unnecessary offline action (#7594) (@graceguo-supercat)
- [#7615](https://github.com/apache/incubator-superset/pull/7615) Fix SQL Lab window resizing layout bug (#7615) (@etr2460)
- [#7131](https://github.com/apache/incubator-superset/pull/7131) Make timestamp expression native SQLAlchemy element (#7131) (@villebro)
- [#6610](https://github.com/apache/incubator-superset/pull/6610) Add support for Apache Drill (#6610) (@cgivre)
- [#7550](https://github.com/apache/incubator-superset/pull/7550) Bump python libs, address insecure releases (#7550) (@mistercrunch)
- [#7579](https://github.com/apache/incubator-superset/pull/7579) Add "Auto" option to Mapbox visualization point radius (#7579) (@ali-bahjati)
- [#7379](https://github.com/apache/incubator-superset/pull/7379) Remove the use of Pandas' iloc() in WorldMapViz (#7379) (@elukey)
- [#7453](https://github.com/apache/incubator-superset/pull/7453) Add support for period character in table names (#7453) (@villebro)
- [#7586](https://github.com/apache/incubator-superset/pull/7586) Remove aggregates from metric options if datasource has no columns (#7586) (@michellethomas)
### 0.29.0rc7 (2018/12/05 14:18:19 +00:00)
- [#6464](https://github.com/apache/incubator-superset/pull/6464) Update `@superset-ui/colors` (#6464)(@kristw)
### 0.32.0rc2.dev2 (2019/05/24 03:28 +00:00)
- [#7498](https://github.com/apache/incubator-superset/pull/7498) [sql lab]revert #4833 (#7498) (@graceguo-supercat)
- [#7576](https://github.com/apache/incubator-superset/pull/7576) add American Express to list of users on readme (#7576) (@TheLastSultan)
- [#7584](https://github.com/apache/incubator-superset/pull/7584) Add link to scheduled pipeline (#7584) (@betodealmeida)
- [#7559](https://github.com/apache/incubator-superset/pull/7559) Fix for polling queries (#7559) (@betodealmeida)
- [#7585](https://github.com/apache/incubator-superset/pull/7585) A few improvements to scheduling queries (#7585) (@betodealmeida)
- [#7468](https://github.com/apache/incubator-superset/pull/7468) Adding controls for verifying options (#7468) (@michellethomas)
- [#7570](https://github.com/apache/incubator-superset/pull/7570) [testconn] Explicit closing engine connection (#7570) (@john-bodley)
- [#7573](https://github.com/apache/incubator-superset/pull/7573) [ad-hoc] Fixing type for count distinct (#7573) (@john-bodley)
- [#7552](https://github.com/apache/incubator-superset/pull/7552) [cypress] fix accessing a cross-origin frame error (#7552) (@graceguo-supercat)
- [#7330](https://github.com/apache/incubator-superset/pull/7330) Add dotenv to dependencies (#7330) (@mistercrunch)
- [#5096](https://github.com/apache/incubator-superset/pull/5096) Boxplot should not require a datetime column (#5096) (@AxelMathei)
- [#7355](https://github.com/apache/incubator-superset/pull/7355) [security] New, deprecate merge_perm, FAB method is fixed (#7355) (@dpgaspar)
- [#7426](https://github.com/apache/incubator-superset/pull/7426) Rjurney master docs update (#7426) (@rjurney)
- [#7535](https://github.com/apache/incubator-superset/pull/7535) Disabling flask-talisman by default (#7535) (@mistercrunch)
- [#7556](https://github.com/apache/incubator-superset/pull/7556) feat: add header tooltip (#7556) (@khtruong)
### 0.29.0rc6 (2018/12/05 11:27:10 +00:00)
- [#](https://github.com/apache/incubator-superset/pull/) Pypi has a 60mb package size limit, and we're overNone (#)(@mistercrunch)
### 0.33.0rc1 (2019/05/18 19:51 +00:00)
- [#7545](https://github.com/apache/incubator-superset/pull/7545) Show scheduled queries (#7545) (@betodealmeida)
- [#7544](https://github.com/apache/incubator-superset/pull/7544) Validate start/end when scheduling queries (#7544) (@betodealmeida)
- [#7529](https://github.com/apache/incubator-superset/pull/7529) Talisman config (#7529) (@craig-rueda)
- [#7523](https://github.com/apache/incubator-superset/pull/7523) [sql lab] Fix new query stuck at pending state (#7523) (@graceguo-supercat)
- [#7499](https://github.com/apache/incubator-superset/pull/7499) chore: Truncate progressbar percentage decimals (#7499) (#7517) (#7519) (@bearcage)
- [#7461](https://github.com/apache/incubator-superset/pull/7461) feat: Live query validation in the SQL Lab UI (#7461) (#7516) (#7518) (@bearcage)
- [#7507](https://github.com/apache/incubator-superset/pull/7507) fix: cache issue for api/v1/query (#7507) (@conglei)
- [#7506](https://github.com/apache/incubator-superset/pull/7506) Change Visual Properties tab label to Customize (#7506) (@felixcodes)
- [#7500](https://github.com/apache/incubator-superset/pull/7500) Flatten legacy preset charts (#7500) (@felixcodes)
- [#7443](https://github.com/apache/incubator-superset/pull/7443) [security] Adding Flask-Talisman (#7443) (@john-bodley)
- [#7485](https://github.com/apache/incubator-superset/pull/7485) Break line before LIMIT statement to prevent trailing comment issue (#7485) (@mistercrunch)
- [#7481](https://github.com/apache/incubator-superset/pull/7481) Add Chinese translation (#7481) (@cscainiao)
- [#7377](https://github.com/apache/incubator-superset/pull/7377) druid connector: avoid using 'dimensions' for scan queries (#7377) (@elukey)
- [#7464](https://github.com/apache/incubator-superset/pull/7464) Revised Chinese translation (#7464) (@cscainiao)
- [#7428](https://github.com/apache/incubator-superset/pull/7428) Refactor ConsoleLog (#7428) (@betodealmeida)
- [#7476](https://github.com/apache/incubator-superset/pull/7476) fix: alter sql columns to long text #7463 (#7476) (@khtruong)
- [#7233](https://github.com/apache/incubator-superset/pull/7233) [dashboard] After update filter, trigger new queries when charts are visible (#7233) (@graceguo-supercat)
- [#7297](https://github.com/apache/incubator-superset/pull/7297) bugfix: Improve support for special characters in schema and table names (#7297) (@villebro)
- [#7375](https://github.com/apache/incubator-superset/pull/7375) fix: calendar heatmap examples (#7375) (@mistercrunch)
- [#7471](https://github.com/apache/incubator-superset/pull/7471) Late import for optional lib pyhive (#7471) (@mistercrunch)
- [#7452](https://github.com/apache/incubator-superset/pull/7452) Adds missing metric sum__SP_RUR_TOTL (#7452) (@rjurney)
- [#7422](https://github.com/apache/incubator-superset/pull/7422) feat: Add `validate_sql_json` endpoint for checking that a given sql query is valid for the chosen database (#7422) (#7462) (@bearcage)
- [#7416](https://github.com/apache/incubator-superset/pull/7416) feat: Scheduling queries from SQL Lab (#7416) (#7446) (@DiggidyDave)
- [#7445](https://github.com/apache/incubator-superset/pull/7445) feat: view presto row objects in data grid (#7445) (@khtruong)
- [#7434](https://github.com/apache/incubator-superset/pull/7434) Quick fix to address deadlock issue (#7434) (@craig-rueda)
- [#7402](https://github.com/apache/incubator-superset/pull/7402) add chinese translate (#7402) (@cscainiao)
- [#7374](https://github.com/apache/incubator-superset/pull/7374) [fix] Fixing SQL parsing issue (#7374) (@john-bodley)
- [#6604](https://github.com/apache/incubator-superset/pull/6604) Added additional German translations to string file (#6604) (@KilimAnnejaro)
- [#7427](https://github.com/apache/incubator-superset/pull/7427) Fixes dashboard export button missing download and #7353 (#7427) (@rjurney)
- [#7421](https://github.com/apache/incubator-superset/pull/7421) Removed --console-log and superset runserver (#7421) (@rjurney)
- [#7413](https://github.com/apache/incubator-superset/pull/7413) feature: see Presto row and array data types (#7413) (@DiggidyDave)
- [#7350](https://github.com/apache/incubator-superset/pull/7350) Refactor out controlUtils.js module + unit tests (#7350) (@mistercrunch)
- [#7410](https://github.com/apache/incubator-superset/pull/7410) Setting renderTrigger on label_colors (#7410) (@michellethomas)
- [#7326](https://github.com/apache/incubator-superset/pull/7326) [annotations] Improves UX on annotation validation, start_dttm, end_dttm (#7326) (@dpgaspar)
- [#7323](https://github.com/apache/incubator-superset/pull/7323) Bump FAB to 2.0.0 (#7323) (@dpgaspar)
- [#7411](https://github.com/apache/incubator-superset/pull/7411) [SQL Lab] Increase timeout threshold for offline check (#7411) (@graceguo-supercat)
- [#7390](https://github.com/apache/incubator-superset/pull/7390) [dashboard] allow user re-order top-level tabs (#7390) (@graceguo-supercat)
- [#7407](https://github.com/apache/incubator-superset/pull/7407) Added living goods as among the users of Superset (#7407) (@chelule)
- [#7365](https://github.com/apache/incubator-superset/pull/7365) Fix NoneType bug & fill the test recipients with original recipients if empty (#7365) (@tssujt)
- [929fb6b](https://github.com/apache/incubator-superset/commit/929fb6bbb8fdc5c03ba4f88898c91183ab2bad11) Merge branch 'lyftga' (@mistercrunch)
- [#5453](https://github.com/apache/incubator-superset/pull/5453) [schema] Updating the base metric schema (#5453) (@john-bodley)
- [#7181](https://github.com/apache/incubator-superset/pull/7181) Store last selected dashboard in sessionStorage (#7181) (@leakingoxide)
- [#7371](https://github.com/apache/incubator-superset/pull/7371) [schema] Adding commits and removing unnecessary foreign-key definitions (#7371) (@john-bodley)
- [#7360](https://github.com/apache/incubator-superset/pull/7360) SUPERSET-8: Update text in docs copyright footer (#7360) (@andrewmusselman)
- [#7359](https://github.com/apache/incubator-superset/pull/7359) SUPERSET-7: Docker compose config version breaks on Ubuntu 16.04 (#7359) (@andrewmusselman)
- [#7087](https://github.com/apache/incubator-superset/pull/7087) [bubbles] issue when using duplicated metrics (#7087) (@mistercrunch)
- [#7331](https://github.com/apache/incubator-superset/pull/7331) remove backendSync.json (#7331) (@kristw)
- [#7338](https://github.com/apache/incubator-superset/pull/7338) Fix raw HTML in SliceAdder (#7338) (@mistercrunch)
- [#7348](https://github.com/apache/incubator-superset/pull/7348) Feature flag for client cache (#7348) (@betodealmeida)
- [#7361](https://github.com/apache/incubator-superset/pull/7361) Update 937d04c16b64_update_datasources.py (#7361) (@john-bodley)
- [#5452](https://github.com/apache/incubator-superset/pull/5452) [schema] Updating the base column schema (#5452) (@john-bodley)
- [#7342](https://github.com/apache/incubator-superset/pull/7342) Add type anno (#7342) (@craig-rueda)
- [#7358](https://github.com/apache/incubator-superset/pull/7358) limit tables/views returned if schema is not provided (#7358) (@datability-io)
- [#5451](https://github.com/apache/incubator-superset/pull/5451) [schema] Updating the datasources schema (#5451) (@john-bodley)
- [#7084](https://github.com/apache/incubator-superset/pull/7084) [wtforms] Strip leading/trailing whitespace (#7084) (@john-bodley)
- [#7347](https://github.com/apache/incubator-superset/pull/7347) fix: do not save colors without a color scheme (#7347) (@khtruong)
- [#7341](https://github.com/apache/incubator-superset/pull/7341) Create issue_label_bot.yaml (#7341) (@hamelsmu)
- [#7345](https://github.com/apache/incubator-superset/pull/7345) improve not rich tooltip (#7345) (@datability-io)
- [#6936](https://github.com/apache/incubator-superset/pull/6936) Allow Gamma and Alpha to access '/users/userinfo/' (#6936) (@mistercrunch)
- [#7013](https://github.com/apache/incubator-superset/pull/7013) [table] highlight selected <td>s (#7013) (@mistercrunch)
- [#7335](https://github.com/apache/incubator-superset/pull/7335) fixes #6353 by changing tag on base image (#7335) (@connor924)
- [#7076](https://github.com/apache/incubator-superset/pull/7076) Fix #7056 'Unhashable type' in paired t-test chart (#7076) (@mistercrunch)
- [#7329](https://github.com/apache/incubator-superset/pull/7329) [docs] improve the RELEASING.md docs (#7329) (@mistercrunch)
### 0.29.0rc5 (2018/12/01 12:39:20 +00:00)
- [#6422](https://github.com/apache/incubator-superset/pull/6422) [logging] Add render failure error into log (#6422)(@graceguo-supercat)
- [#6417](https://github.com/apache/incubator-superset/pull/6417) [bugfix] Display raw value in addition to ERROR (#6417)(@kristw)
- [#6405](https://github.com/apache/incubator-superset/pull/6405) [fix] view results in sql lab (#6405)(@graceguo-supercat)
- [#6363](https://github.com/apache/incubator-superset/pull/6363) [bugfix] deck.gl grid&hex don't respond to zoom&drag (#6363)(@mistercrunch)
- [#6399](https://github.com/apache/incubator-superset/pull/6399) Fix adhoc metrics in Polygon (#6399)(@mistercrunch)
- [#6400](https://github.com/apache/incubator-superset/pull/6400) Set default limit on creation of new qe and on run (#6400)(@jeffreythewang)
- [#6393](https://github.com/apache/incubator-superset/pull/6393) [fix] JS error after delete row level tab (#6393)(@graceguo-supercat)
- [#6386](https://github.com/apache/incubator-superset/pull/6386) [bugfix] prevent d3-format from raising (#6386)(@mistercrunch)
- [#6384](https://github.com/apache/incubator-superset/pull/6384) do not convert value to lowercase when looking up color (#6384)(@kristw)
- [#6375](https://github.com/apache/incubator-superset/pull/6375) Fixed the cache issue for BigNumber (#6375)(@conglei)
### 0.32.0rc2 (2019/04/19 22:08 +00:00)
- [#7313](https://github.com/apache/incubator-superset/pull/7313) filter out all nan series (#7313) (@datability-io)
- [5f28027](https://github.com/apache/incubator-superset/commit/5f28027ce745dfda67e18fe7df8468184400be50) Merging lyftga into master (@mistercrunch)
### 0.29.0rc4 (2018/11/12 10:54:56 +00:00)
- [#6355](https://github.com/apache/incubator-superset/pull/6355) [404] Aborting for views with invalid dashboard/slice IDs (#6355)(@john-bodley)
- [#6357](https://github.com/apache/incubator-superset/pull/6357) [hive] Fixing where lastest partition logic (#6357)(@john-bodley)
- [#6361](https://github.com/apache/incubator-superset/pull/6361) [cypress] Test dashboard save/save_as functions (#6361)(@graceguo-supercat)
- [#6234](https://github.com/apache/incubator-superset/pull/6234) [reviewable] Integrate @superset-ui/{core,color,chart} modules (#6234)(@kristw)
- [#6282](https://github.com/apache/incubator-superset/pull/6282) [nvd3] refactor margins (#6282)(@mistercrunch)
- [#6359](https://github.com/apache/incubator-superset/pull/6359) Parse datasource_id as integer on the server side (#6359)(@xtinec)
### 0.32.0rc1 (2019/04/19 05:26 +00:00)
- [#7161](https://github.com/apache/incubator-superset/pull/7161) fix: typos in translations placeholders (#7161) (@leakingoxide)
- [#7231](https://github.com/apache/incubator-superset/pull/7231) Fix control validation handling (#7231) (@mistercrunch)
- [#7234](https://github.com/apache/incubator-superset/pull/7234) Adding permission for can_only_access_owned_queries (#7234) (@michellethomas)
- [#7289](https://github.com/apache/incubator-superset/pull/7289) fix: propagate color mapping from dashboard to charts (#7289) (@khtruong)
- [#7318](https://github.com/apache/incubator-superset/pull/7318) Remove LICENSE entry around dataset (#7318) (@mistercrunch)
- [#7294](https://github.com/apache/incubator-superset/pull/7294) feat: bump superset-ui versions to 0.11 (#7294) (@kristw)
- [#7314](https://github.com/apache/incubator-superset/pull/7314) [load_examples] download data at runtime (#7314) (@mistercrunch)
- [#7302](https://github.com/apache/incubator-superset/pull/7302) fix: time series table (#7302) (#7312) (@michellethomas)
- [#7315](https://github.com/apache/incubator-superset/pull/7315) Update AceEditorWrapper.jsx (#7315) (@ddna1021)
- [#7113](https://github.com/apache/incubator-superset/pull/7113) [slice] Fix, remove duplicate label_columns property (#7113) (@dpgaspar)
- [#7302](https://github.com/apache/incubator-superset/pull/7302) fix: time series table (#7302) (@khtruong)
- [#6959](https://github.com/apache/incubator-superset/pull/6959) Revert "bugfix: improve 'Time Table' (#6959)" (#7304) (@khtruong)
- [#7296](https://github.com/apache/incubator-superset/pull/7296) Add details to release instructions (#7296) (@mistercrunch)
- [#7271](https://github.com/apache/incubator-superset/pull/7271) Add all database access permission to 'Alpha' role (#7271) (@mistercrunch)
- [#7293](https://github.com/apache/incubator-superset/pull/7293) chore: update legacy packages (#7293) (@khtruong)
- [#7292](https://github.com/apache/incubator-superset/pull/7292) Bump nvd3 dep and 'npm audit fix' (#7292) (@mistercrunch)
- [#6959](https://github.com/apache/incubator-superset/pull/6959) bugfix: improve 'Time Table' (#6959) (@mistercrunch)
- [#7261](https://github.com/apache/incubator-superset/pull/7261) Minor improvements to <Hotkeys /> component (#7261) (@mistercrunch)
- [#7100](https://github.com/apache/incubator-superset/pull/7100) Improve code smell, use py3k super() call (#7100) (@zhaoyongjie)
- [#7279](https://github.com/apache/incubator-superset/pull/7279) fix: make the bot more descriptive (#7279) (@kristw)
- [#7278](https://github.com/apache/incubator-superset/pull/7278) fix: make SIPs exempt from stale bots (#7278) (@kristw)
- [#7211](https://github.com/apache/incubator-superset/pull/7211) Deprecate npm run backend-sync and related logic (#7211) (@mistercrunch)
- [#7249](https://github.com/apache/incubator-superset/pull/7249) chore: add bot config files and update issue templates (#7249) (@kristw)
- [#7263](https://github.com/apache/incubator-superset/pull/7263) Run 'npm audit fix' to address vulnerabilities (#7263) (@mistercrunch)
- [#7268](https://github.com/apache/incubator-superset/pull/7268) chore: update big number package (#7268) (@khtruong)
- [#7266](https://github.com/apache/incubator-superset/pull/7266) Do not add tag to non-saved objects (#7266) (@betodealmeida)
- [#7121](https://github.com/apache/incubator-superset/pull/7121) [SQL Lab] fix table metadata loading spinner (#7121) (@mistercrunch)
- [#7009](https://github.com/apache/incubator-superset/pull/7009) Revert "Fix issues around Database permissions (#7009)" (#7267) (@betodealmeida)
- [#7264](https://github.com/apache/incubator-superset/pull/7264) Add extra bucket when max outside range (#7264) (@betodealmeida)
- [#7260](https://github.com/apache/incubator-superset/pull/7260) Bump pydruid to 0.5.2 (#7260) (@betodealmeida)
- [#7258](https://github.com/apache/incubator-superset/pull/7258) update migration Revision for #6945 (#7258) (@graceguo-supercat)
- [#7255](https://github.com/apache/incubator-superset/pull/7255) Pass viz type to GET requests (#7255) (@betodealmeida)
- [#7256](https://github.com/apache/incubator-superset/pull/7256) fix: Handle rendering a single point (#7256) (@khtruong)
- [#6964](https://github.com/apache/incubator-superset/pull/6964) feat(dashboard): direct link to single chart/tab/header in dashboard (#6964) (@graceguo-supercat)
- [#6945](https://github.com/apache/incubator-superset/pull/6945) add parent ids into Dashboard layout metadata (#6945) (@graceguo-supercat)
- [#7164](https://github.com/apache/incubator-superset/pull/7164) [cache] Render label when cached (#7164) (@john-bodley)
- [#7217](https://github.com/apache/incubator-superset/pull/7217) fix: Remove ASF license from github templates (PR and issues) (#7217) (@mistercrunch)
- [#7248](https://github.com/apache/incubator-superset/pull/7248) Fix refresh frequency (#7248) (@betodealmeida)
- [#7227](https://github.com/apache/incubator-superset/pull/7227) Improve cache (#7227) (@betodealmeida)
- [#7251](https://github.com/apache/incubator-superset/pull/7251) Add link to documentation (#7251) (@betodealmeida)
- [#7250](https://github.com/apache/incubator-superset/pull/7250) Fix partition query in Presto (#7250) (@betodealmeida)
- [#7105](https://github.com/apache/incubator-superset/pull/7105) Fix logo / branding files (#7105) (@mistercrunch)
- [#7247](https://github.com/apache/incubator-superset/pull/7247) Fix spinning in Welcome page (#7247) (@betodealmeida)
- [#7245](https://github.com/apache/incubator-superset/pull/7245) increment version numbers (#7245) (@datability-io)
- [#7212](https://github.com/apache/incubator-superset/pull/7212) Tweaks to word cloud controls (#7212) (@mistercrunch)
- [#7220](https://github.com/apache/incubator-superset/pull/7220) [filter_box] allow empty filters list (#7220) (#7244) (@michellethomas)
- [#7198](https://github.com/apache/incubator-superset/pull/7198) Fix race condition when fetching results in SQL Lab (#7198) (#7242) (@michellethomas)
- [#7240](https://github.com/apache/incubator-superset/pull/7240) Fix for tagging backend (#7240) (@betodealmeida)
- [#7232](https://github.com/apache/incubator-superset/pull/7232) increment version number for nvd3 (#7232) (@datability-io)
- [#7220](https://github.com/apache/incubator-superset/pull/7220) [filter_box] allow empty filters list (#7220) (@mistercrunch)
- [#7221](https://github.com/apache/incubator-superset/pull/7221) fix: give a more accurate time (#7221) (@khtruong)
- [#7228](https://github.com/apache/incubator-superset/pull/7228) Fix time grain after revert (#7228) (@betodealmeida)
- [#7226](https://github.com/apache/incubator-superset/pull/7226) fix: add check for polygon tooltips (#7226) (@khtruong)
- [#7148](https://github.com/apache/incubator-superset/pull/7148) Celery task for warming up cache (#7148) (@betodealmeida)
- [#7206](https://github.com/apache/incubator-superset/pull/7206) feat: [lyftga] add tooltips to deck.gl viz types (#7206) (@khtruong)
- [e714dc1](https://github.com/apache/incubator-superset/commit/e714dc19feb42fefbc573272edc06a50963b0849) Merge branch 'master' into lyftga (@mistercrunch)
- [#7215](https://github.com/apache/incubator-superset/pull/7215) Fix <Select> clearable (#7215) (@mistercrunch)
- [#7218](https://github.com/apache/incubator-superset/pull/7218) Allow bigint to be used as time column in Presto (#7218) (@betodealmeida)
- [#7032](https://github.com/apache/incubator-superset/pull/7032) Fetch charts with GET to benefit from browser cache and conditional requests (#7032) (@betodealmeida)
- [#7210](https://github.com/apache/incubator-superset/pull/7210) chore: revert bignumber.js patch for charts and reapply the original bignumber.js change to SQL editor in an opt-in fashion (#7210) (@xtinec)
- [#7123](https://github.com/apache/incubator-superset/pull/7123) [Data Source Editor] Use type of NUMERIC instead of NUMBER and make editor accept freeform types (#7123) (@agrawaldevesh)
- [#7208](https://github.com/apache/incubator-superset/pull/7208) fix: [lyftga] pass the latest deckgl props (#7208) (@khtruong)
- [#7205](https://github.com/apache/incubator-superset/pull/7205) Update necessary packages (#7205) (@khtruong)
- [#6979](https://github.com/apache/incubator-superset/pull/6979) Show tooltip with time frame (#6979) (@betodealmeida)
- [#6978](https://github.com/apache/incubator-superset/pull/6978) Fix time filter control (#6978) (@betodealmeida)
- [#7003](https://github.com/apache/incubator-superset/pull/7003) feat: add ability to change font size in big number (#7003) (@khtruong)
- [#7052](https://github.com/apache/incubator-superset/pull/7052) Allow LIMIT to be specified in parameters (#7052) (@betodealmeida)
- [#7135](https://github.com/apache/incubator-superset/pull/7135) [Lyft-GA] Enable color consistency in a dashboard (#7135) (@khtruong)
- [#7162](https://github.com/apache/incubator-superset/pull/7162) Revert PR #6933 (#7162) (@betodealmeida)
- [#7198](https://github.com/apache/incubator-superset/pull/7198) Fix race condition when fetching results in SQL Lab (#7198) (@betodealmeida)
- [#7137](https://github.com/apache/incubator-superset/pull/7137) Change number format default (#7137) (@khtruong)
- [#7188](https://github.com/apache/incubator-superset/pull/7188) fix: deck.gl polygon tooltip (#7188) (@datability-io)
- [#7036](https://github.com/apache/incubator-superset/pull/7036) [security] make it easier to redefine Alpha/Gamma (#7036) (@mistercrunch)
- [#7197](https://github.com/apache/incubator-superset/pull/7197) [fix] a typo in variable name (#7197) (@graceguo-supercat)
- [#7194](https://github.com/apache/incubator-superset/pull/7194) feat: added i18n statements to sqllab (#7194) (@enricoberti)
- [#7180](https://github.com/apache/incubator-superset/pull/7180) fix: do not crash when a vis type is disabled. (#7180) (@kristw)
- [#7126](https://github.com/apache/incubator-superset/pull/7126) fix(sqllab): remove duplicate selector in style file (#7126) (@rasmi-ranjan-guavus)
- [#7179](https://github.com/apache/incubator-superset/pull/7179) fix PRODUCT-67916 Click OK button cannot close error message modal (#7179) (@hannahsquier)
- [#7166](https://github.com/apache/incubator-superset/pull/7166) Update __init__.py (#7166) (@john-bodley)
- [#7120](https://github.com/apache/incubator-superset/pull/7120) [SQL Lab] Show tooltip on schema and table select options (#7120) (@enricoberti)
- [#7176](https://github.com/apache/incubator-superset/pull/7176) chore: add main pull request template (#7176) (@michellethomas)
- [#7159](https://github.com/apache/incubator-superset/pull/7159) Adding pull request templates (#7159) (@michellethomas)
- [#7168](https://github.com/apache/incubator-superset/pull/7168) Fix double scroll bars when content of sql result table overflows horizontally (#7168) (@xtinec)
- [#7158](https://github.com/apache/incubator-superset/pull/7158) docs: add cloudsmith to company list (#7158) (@alancarson)
- [#7145](https://github.com/apache/incubator-superset/pull/7145) [migration] Fixing issue with fb13d49b72f9 downgrade (#7145) (@john-bodley)
- [#7144](https://github.com/apache/incubator-superset/pull/7144) [migration] Fixing issue with c82ee8a39623 downgrade (#7144) (@john-bodley)
- [#7104](https://github.com/apache/incubator-superset/pull/7104) [bugfix] SQL Lab 'Filter Results' doesn't stick (#7104) (@mistercrunch)
- [#7138](https://github.com/apache/incubator-superset/pull/7138) Injectable statsd client (#7138) (@DiggidyDave)
- [#7118](https://github.com/apache/incubator-superset/pull/7118) fix: Superset logo link when logged out (#7118) (@enricoberti)
- [#7115](https://github.com/apache/incubator-superset/pull/7115) chore: updating extra requires (#7115) (@john-bodley)
- [#7111](https://github.com/apache/incubator-superset/pull/7111) [SQL Lab] Avoid closing save query modal on backdrop click (#7111) (@enricoberti)
- [#7103](https://github.com/apache/incubator-superset/pull/7103) [docs] CONTRIBUTING.md - how to setup SQL Lab in async mode (#7103) (@mistercrunch)
- [#7132](https://github.com/apache/incubator-superset/pull/7132) Bump python lib croniter to an existing version (#7132) (@mistercrunch)
- [#7122](https://github.com/apache/incubator-superset/pull/7122) Remove super verbose `logging.debug` call (#7122) (@mistercrunch)
- [#7090](https://github.com/apache/incubator-superset/pull/7090) fix(useless-self-assignment): correct useless-self-assignment (#7090) (@rasmi-ranjan-guavus)
- [#7054](https://github.com/apache/incubator-superset/pull/7054) Scripts & instructions to craft official Apache source releases (#7054) (@mistercrunch)
- [#6795](https://github.com/apache/incubator-superset/pull/6795) Add HTTP Basic Auth for Druid (Issue #4776) (#6795) (@donbowman)
- [#7102](https://github.com/apache/incubator-superset/pull/7102) SQL editor layout makeover (#7102) (@xtinec)
- [#7117](https://github.com/apache/incubator-superset/pull/7117) [docs] improve UPDATING.md around 0.31's [now] optional deps (#7117) (@mistercrunch)
- [#7106](https://github.com/apache/incubator-superset/pull/7106) Use metric name instead of metric in filter box (#7106) (@michellethomas)
- [#7078](https://github.com/apache/incubator-superset/pull/7078) [forms] Fix handling of NULLs (#7078) (@john-bodley)
- [#7099](https://github.com/apache/incubator-superset/pull/7099) Bump SQLAlchemy to 1.3 (#7099) (@villebro)
- [#7053](https://github.com/apache/incubator-superset/pull/7053) [mypy] Adding mypy linting (#7053) (@john-bodley)
- [#7063](https://github.com/apache/incubator-superset/pull/7063) handle null column_name in sqla and druid models (#7063) (@graceguo-supercat)
- [#7097](https://github.com/apache/incubator-superset/pull/7097) [api] add `available_domains/` endpoint (#7097) (@williaster)
- [#5741](https://github.com/apache/incubator-superset/pull/5741) [Dashboard] Keeping refresh frequency value in Dashboard (#5741) (@zhaoyongjie)
- [#7088](https://github.com/apache/incubator-superset/pull/7088) fix: bump pivot table version (#7088) (@kristw)
- [#5835](https://github.com/apache/incubator-superset/pull/5835) [bugfix] throw "TypeError: 'NoneType'..." when save chart to new/existing dash. (#5835) (@hitdemo)
- [#7085](https://github.com/apache/incubator-superset/pull/7085) Bump FAB to 1.12.5 (#7085) (@dpgaspar)
- [#7082](https://github.com/apache/incubator-superset/pull/7082) [SQL Lab] Improved query and results tabs rendering reliability (#7082) (@enricoberti)
- [#7066](https://github.com/apache/incubator-superset/pull/7066) Fix filter_box migration PR #6523 (#7066) (@mistercrunch)
- [#4905](https://github.com/apache/incubator-superset/pull/4905) [missing values] Removing replacing missing values (#4905) (@john-bodley)
- [#7069](https://github.com/apache/incubator-superset/pull/7069) [SQL Lab] Fixed TableElement sorting functionality and tests (#7069) (#7070) (@enricoberti)
- [#7068](https://github.com/apache/incubator-superset/pull/7068) [SQL Lab] Copy to clipboard should work on the preview tab too (#7068) (#7071) (@enricoberti)
- [#7060](https://github.com/apache/incubator-superset/pull/7060) [tox] Enforcing consistent ordering (#7060) (@john-bodley)
- [#7062](https://github.com/apache/incubator-superset/pull/7062) Handle memoryview like bytes instances and decode bytes to utf8 (#7062) (@villebro)
- [#7065](https://github.com/apache/incubator-superset/pull/7065) docs: add hostnfly to company list (#7065) (@kristw)
- [84109be](https://github.com/apache/incubator-superset/commit/84109be1bfa42480865b7bc766de2680fbd9aba2) fix: search for visualizations with case-insensitive keyword (@bipinsoniguavus)
### 0.29.0rc3 (2018/11/10 12:39:44 +00:00)
- [#6287](https://github.com/apache/incubator-superset/pull/6287) [reviewable] Organize d3 utilities usage (#6287)(@kristw)
- [#6350](https://github.com/apache/incubator-superset/pull/6350) [dashboard] fix save/save-as flow (#6350)(@williaster)
- [#6354](https://github.com/apache/incubator-superset/pull/6354) change to camelcase (#6354)(@kristw)
- [#6346](https://github.com/apache/incubator-superset/pull/6346) Update docker-entrypoint.sh (#6346)(@BrayanArrieta)
- [#6349](https://github.com/apache/incubator-superset/pull/6349) [bugfix] don't parse save dashboard response (#6349)(@williaster)
- [#6290](https://github.com/apache/incubator-superset/pull/6290) [reviewable] [refactor] Split visTypes into one file for each visuali…None (#6290)(@kristw)
### 0.31.0rc18 (2019/03/19 06:32 +00:00)
- [#7012](https://github.com/apache/incubator-superset/pull/7012) docs: fix RST issues while building docs (#7012) (@mistercrunch)
- [#6938](https://github.com/apache/incubator-superset/pull/6938) feat: add Bulgaria to country map (#6938) (@djok)
- [#7051](https://github.com/apache/incubator-superset/pull/7051) feat: bump superset-ui-plugins to v0.10.2 (#7051) (@kristw)
### 0.29.0rc2 (2018/11/08 09:39:24 +00:00)
- [#6299](https://github.com/apache/incubator-superset/pull/6299) Make stacktraces available in many more cases (#6299)(@mistercrunch)
- [#6308](https://github.com/apache/incubator-superset/pull/6308) Add Showmax among users (#6308)(@bobek)
- [#6293](https://github.com/apache/incubator-superset/pull/6293) [fix warning] Warning: Failed prop type: Invalid prop bsSize of value…None (#6293)(@mistercrunch)
- [#6289](https://github.com/apache/incubator-superset/pull/6289) Docker Demo, Port Change (#6289)(@IrfanFaizullabhoy)
- [#6286](https://github.com/apache/incubator-superset/pull/6286) [annotation] Only allow override whole time_range (#6286)(@graceguo-supercat)
- [#6297](https://github.com/apache/incubator-superset/pull/6297) add logging to csv upload (#6297)(@timifasubaa)
- [#6220](https://github.com/apache/incubator-superset/pull/6220) [SIP-5] Open a new /api/v1/query endpoint that takes query_obj (#6220)(@xtinec)
- [#6294](https://github.com/apache/incubator-superset/pull/6294) Wrap <LoadableRenderer /> with <ErrorBoundary /> (#6294)(@mistercrunch)
- [#6260](https://github.com/apache/incubator-superset/pull/6260) Geoviz state management fix (#6260)(@betodealmeida)
- [#4941](https://github.com/apache/incubator-superset/pull/4941) Add separate limit setting for SqlLab (#4941)(@jeffreythewang)
- [#6292](https://github.com/apache/incubator-superset/pull/6292) [bugfix] handle Loading spinner properly (#6292)(@mistercrunch)
- [#6257](https://github.com/apache/incubator-superset/pull/6257) sql lab localStorage config (#6257)(@graceguo-supercat)
- [#6288](https://github.com/apache/incubator-superset/pull/6288) [bugfix] deckgl scatter CategoricalDeckGLContainer (#6288)(@mistercrunch)
- [#6277](https://github.com/apache/incubator-superset/pull/6277) Avoid clearing metric when saving from datasource editor (#6277)(@michellethomas)
- [#6283](https://github.com/apache/incubator-superset/pull/6283) [dashboard] fix spinners disapear too early (#6283)(@mistercrunch)
- [#6280](https://github.com/apache/incubator-superset/pull/6280) Fix Infinity css warning (#6280)(@mistercrunch)
- [#6274](https://github.com/apache/incubator-superset/pull/6274) rename @superset-ui/core to @superset-ui/connection (#6274)(@kristw)
- [#6269](https://github.com/apache/incubator-superset/pull/6269) Adding backwards compatable check to add ago to since if it doesn't e…None (#6269)(@michellethomas)
- [#6276](https://github.com/apache/incubator-superset/pull/6276) [superset-client] getClientErrorObject for everyone (#6276)(@williaster)
- [#6273](https://github.com/apache/incubator-superset/pull/6273) Add chart names translation (#6273)(@kristw)
- [#6229](https://github.com/apache/incubator-superset/pull/6229) Fix typo in druid granularity (#6229)(@jeffreythewang)
- [#6252](https://github.com/apache/incubator-superset/pull/6252) [explore] raise attention to row_limit being reached (#6252)(@mistercrunch)
- [#6258](https://github.com/apache/incubator-superset/pull/6258) Dockerfile change because error: E: The method driver /usr/lib/apt/me…None (#6258)(@kk580kk)
- [#6270](https://github.com/apache/incubator-superset/pull/6270) i18nes) (#6270)(@joebordes)
- [#6208](https://github.com/apache/incubator-superset/pull/6208) I18n es002 (#6208)(@joebordes)
- [#6264](https://github.com/apache/incubator-superset/pull/6264) Externally Visible Server (#6264)(@mlboy)
- [#6261](https://github.com/apache/incubator-superset/pull/6261) Remove label and showOnExplore. Specific import validators (#6261)(@kristw)
- [#6251](https://github.com/apache/incubator-superset/pull/6251) [Fix] merge since,until request parameter with time_range (#6251)(@graceguo-supercat)
- [#6235](https://github.com/apache/incubator-superset/pull/6235) Make VizTypeControl use metadata from plugin (#6235)(@kristw)
- [#6259](https://github.com/apache/incubator-superset/pull/6259) Update CONTRIBUTING.md (#6259)(@betodealmeida)
- [#6244](https://github.com/apache/incubator-superset/pull/6244) Setting line chart row_limit to 50000 (#6244)(@michellethomas)
- [#6236](https://github.com/apache/incubator-superset/pull/6236) Dashboard filter box default (#6236)(@michellethomas)
- [#6255](https://github.com/apache/incubator-superset/pull/6255) revert the change in config.py (#6255)(@youngyjd)
- [#6239](https://github.com/apache/incubator-superset/pull/6239) Bump Flask, bleach and sync pip-compile (#6239)(@mistercrunch)
- [#5881](https://github.com/apache/incubator-superset/pull/5881) Fix examples charts/dashboards and refactor (#5881)(@mistercrunch)
- [#6246](https://github.com/apache/incubator-superset/pull/6246) Fixed grammatical errors. (#6246)(@rakshitkumarcse)
- [#6245](https://github.com/apache/incubator-superset/pull/6245) Fixed grammatical errors. (#6245)(@rakshitkumarcse)
- [#6247](https://github.com/apache/incubator-superset/pull/6247) Fixed grammatical errors (#6247)(@rakshitkumarcse)
- [#6248](https://github.com/apache/incubator-superset/pull/6248) Fixed typos and grammatical errors (#6248)(@rakshitkumarcse)
- [#6249](https://github.com/apache/incubator-superset/pull/6249) fixed grammatical errors and typos (#6249)(@rakshitkumarcse)
- [#6250](https://github.com/apache/incubator-superset/pull/6250) Corrected name of an area and fixed major grammatical errors (#6250)(@rakshitkumarcse)
- [#6153](https://github.com/apache/incubator-superset/pull/6153) Move metadata cache one layer up (#6153)(@youngyjd)
- [#6231](https://github.com/apache/incubator-superset/pull/6231) [bugfix] cannot add options to FilterBox (#6231)(@mistercrunch)
- [#6228](https://github.com/apache/incubator-superset/pull/6228) [sql lab] improve placeholder strings for query search form (#6228)(@mistercrunch)
- [#6237](https://github.com/apache/incubator-superset/pull/6237) fix misstake (#6237)(@mlboy)
- [#6195](https://github.com/apache/incubator-superset/pull/6195) [datasource] Ensure SQL Lab link opens in a new tab (#6195)(@john-bodley)
- [#6222](https://github.com/apache/incubator-superset/pull/6222) Integrate translation module @superset-ui/translation (#6222)(@kristw)
### 0.31.0rc1 (2019/03/18 23:17 +00:00)
- [#7028](https://github.com/apache/incubator-superset/pull/7028) Adding warning message for sqllab save query (#7028) (@michellethomas)
- [#7037](https://github.com/apache/incubator-superset/pull/7037) [datasource] Ensuring consistent behavior of datasource editing/saving. (#7037) (@john-bodley)
- [#7040](https://github.com/apache/incubator-superset/pull/7040) [fix] Use HTTPS, not HTTP wherever practical (#7040) (@hajdbo)
- [#7009](https://github.com/apache/incubator-superset/pull/7009) Fix issues around Database permissions (#7009) (@mistercrunch)
- [#7046](https://github.com/apache/incubator-superset/pull/7046) [fix] explore chart from dashboard missed slice title (#7046) (@graceguo-supercat)
- [#6821](https://github.com/apache/incubator-superset/pull/6821) User can turn off download - export csv from a dashboard (#6821) (@emacip)
- [#6993](https://github.com/apache/incubator-superset/pull/6993) fix: groupable only columns populating in filters (#6993) (@1AB9502)
- [#7038](https://github.com/apache/incubator-superset/pull/7038) [fix] Cursor jumping when editing chart and dashboard titles (#7038) (@graceguo-supercat)
- [#7029](https://github.com/apache/incubator-superset/pull/7029) [sqlparse] Fixing table name extraction for ill-defined query (#7029) (@john-bodley)
- [#7039](https://github.com/apache/incubator-superset/pull/7039) [api/v1][query_obj] add default prequeries array (#7039) (@williaster)
- [#6987](https://github.com/apache/incubator-superset/pull/6987) Add handling for memoryview (#6987) (@villebro)
- [#7034](https://github.com/apache/incubator-superset/pull/7034) fix(css-selector): Fixed incorrect css-selector for CRUD page reported by sonarqube report as a critical vulnerability (#7034) (@bipinsoniguavus)
- [#7035](https://github.com/apache/incubator-superset/pull/7035) fix inaccurate data calculation with adata rolling and contribution (#7035) (@conglei)
- [#7027](https://github.com/apache/incubator-superset/pull/7027) [WIP] fix user specified JSON metadata not updating dashboard on refresh (#7027) (@thunter009)
- [#7007](https://github.com/apache/incubator-superset/pull/7007) [db-engine-spec] Aligning Hive/Presto partition logic (#7007) (@john-bodley)
- [#7020](https://github.com/apache/incubator-superset/pull/7020) Changing time table viz to pass formatTime a date (#7020) (@michellethomas)
- [#7000](https://github.com/apache/incubator-superset/pull/7000) Bump sqlalchemy dependency (#7000) (@mistercrunch)
- [#7005](https://github.com/apache/incubator-superset/pull/7005) fixing a broken link for the ORM documentation (#7005) (@MarcusSorealheis)
- [#6989](https://github.com/apache/incubator-superset/pull/6989) [fix] /superset/slice/id url is too long (#6989) (@graceguo-supercat)
- [#6990](https://github.com/apache/incubator-superset/pull/6990) Retrieve df from get_df_payload to hit cache (#6990) (@villebro)
- [#7002](https://github.com/apache/incubator-superset/pull/7002) Split tags migration (#7002) (@xtinec)
- [#6980](https://github.com/apache/incubator-superset/pull/6980) fix(fetch-datasource-meta-data): Chart data is not showing after in charts added by edit mode (#6980) (@ankursinghal2005)
- [#6982](https://github.com/apache/incubator-superset/pull/6982) refactor: bump @superset-ui versions (#6982) (@kristw)
- [#6956](https://github.com/apache/incubator-superset/pull/6956) Adding custom control overrides (#6956) (@michellethomas)
- [#6925](https://github.com/apache/incubator-superset/pull/6925) docs: warn that docker installation instructions are `contrib/` (#6925) (@mistercrunch)
- [#6849](https://github.com/apache/incubator-superset/pull/6849) Sort Chart Types based on Usage (#6849) (@datability-io)
- [#6963](https://github.com/apache/incubator-superset/pull/6963) [sql-parse] Fixing LIMIT exceptions (#6963) (@john-bodley)
- [#6859](https://github.com/apache/incubator-superset/pull/6859) [dashboard editor] use the theme's btn-primary (#6859) (@mistercrunch)
- [#6857](https://github.com/apache/incubator-superset/pull/6857) auto-set 'Is Temporal' to true where column_name == '__time' (#6857) (@mistercrunch)
- [#6962](https://github.com/apache/incubator-superset/pull/6962) Enhancement of query context and object. (#6962) (@conglei)
- [#6968](https://github.com/apache/incubator-superset/pull/6968) [date-filter] Adding minus infinity (#6968) (@john-bodley)
- [#6971](https://github.com/apache/incubator-superset/pull/6971) [csv-upload] Fixing message encoding (#6971) (@john-bodley)
- [#6965](https://github.com/apache/incubator-superset/pull/6965) Exclude venv for python linter to ignore (#6965) (@khtruong)
- [#6933](https://github.com/apache/incubator-superset/pull/6933) Show charts and dashboards based also on database permissions (#6933) (@betodealmeida)
- [#6952](https://github.com/apache/incubator-superset/pull/6952) re-added deleted example file (#6952) (@srggrs)
- [#6958](https://github.com/apache/incubator-superset/pull/6958) VIZ-190 fix (#6958) (@khtruong)
- [#6955](https://github.com/apache/incubator-superset/pull/6955) All french translations (#6955) (@Benji81)
- [#6808](https://github.com/apache/incubator-superset/pull/6808) Allow for dynamic feature flags (#6808) (@mistercrunch)
- [#6953](https://github.com/apache/incubator-superset/pull/6953) Fix deck.gl form data (#6953) (@betodealmeida)
- [#6912](https://github.com/apache/incubator-superset/pull/6912) Remove Cypress from package.json (#6912) (@mistercrunch)
- [#6904](https://github.com/apache/incubator-superset/pull/6904) [js deps] fix dependencies vulnerabilities (#6904) (@mistercrunch)
- [#6905](https://github.com/apache/incubator-superset/pull/6905) Erase previously shown chart on error (#6905) (@mistercrunch)
- [#6944](https://github.com/apache/incubator-superset/pull/6944) Fixes #6842: Refreshes all metadata and datasource (#6944) (@prashant-shahi)
- [#6937](https://github.com/apache/incubator-superset/pull/6937) Fix rendering regression from the introduction of bignumber (#6937) (@xtinec)
- [#6927](https://github.com/apache/incubator-superset/pull/6927) [datasource editor] Add description and label fields (#6927) (@moonboots)
- [#6786](https://github.com/apache/incubator-superset/pull/6786) Remove redundant UTC casts (#6786) (@villebro)
- [#6831](https://github.com/apache/incubator-superset/pull/6831) Do label name mutation before anything else on the dataframe (#6831) (@agrawaldevesh)
- [#6934](https://github.com/apache/incubator-superset/pull/6934) [fix] fix for css not loading on docker dev mode (#6934) (@iaperez)
- [#6897](https://github.com/apache/incubator-superset/pull/6897) Force quotes on non-expression time grains on Postgres (#6897) (@villebro)
- [#6847](https://github.com/apache/incubator-superset/pull/6847) Refactor dataframe and column name mutation logic (#6847) (@villebro)
- [#6920](https://github.com/apache/incubator-superset/pull/6920) Update CHANGELOG.md (#6920) (@wushenchao)
- [#6922](https://github.com/apache/incubator-superset/pull/6922) [fix] minor fix for Superset logger (#6922) (@graceguo-supercat)
- [#6816](https://github.com/apache/incubator-superset/pull/6816) Adding dropdown to DatasourceControl and ability to change datasource (#6816) (@michellethomas)
- [#6923](https://github.com/apache/incubator-superset/pull/6923) Add a safety check before getting clientHeight (#6923) (@xtinec)
- [#6917](https://github.com/apache/incubator-superset/pull/6917) Fix database typeahead in SQL Lab (#6917) (@betodealmeida)
- [#6895](https://github.com/apache/incubator-superset/pull/6895) Fix tooltip (#6895) (@betodealmeida)
- [#6903](https://github.com/apache/incubator-superset/pull/6903) [box plot] add X tick layout control (#6903) (@mistercrunch)
- [#6911](https://github.com/apache/incubator-superset/pull/6911) Add show metadata button back to the explore view (#6911) (@xtinec)
- [#6867](https://github.com/apache/incubator-superset/pull/6867) Raise exception if long or lat not set in mapbox viz (#6867) (@villebro)
- [#6885](https://github.com/apache/incubator-superset/pull/6885) add Filters copy change (#6885) (@MarcusSorealheis)
- [#6894](https://github.com/apache/incubator-superset/pull/6894) Fix npm warning by bumping @superset-ui version (#6894) (@kristw)
- [#6901](https://github.com/apache/incubator-superset/pull/6901) [fix] Typo on config comments for SILENCE_FAB (#6901) (@dpgaspar)
- [#6879](https://github.com/apache/incubator-superset/pull/6879) Improve Superset logger (#6879) (@graceguo-supercat)
- [#6884](https://github.com/apache/incubator-superset/pull/6884) remove dead code (#6884) (@kristw)
- [#6862](https://github.com/apache/incubator-superset/pull/6862) [sqla] Fixing order-by for non-inner-joins (#6862) (@john-bodley)
- [#6869](https://github.com/apache/incubator-superset/pull/6869) Adding template_params to datasource editor for sqla tables (#6869) (@michellethomas)
- [#6882](https://github.com/apache/incubator-superset/pull/6882) [ci] take #2, improve build times by saving TerserPlugin cache (#6882) (@mistercrunch)
- [#6872](https://github.com/apache/incubator-superset/pull/6872) Relayout SQL Editor (#6872) (@xtinec)
- [#6880](https://github.com/apache/incubator-superset/pull/6880) Update webpack config to facilitate debugging charts via npm link (#6880) (@kristw)
- [#6874](https://github.com/apache/incubator-superset/pull/6874) Speed up CI by caching TerserPlugin cache (#6874) (@mistercrunch)
- [#6838](https://github.com/apache/incubator-superset/pull/6838) Use chart plugins and remove code under visualizations (#6838) (@kristw)
- [#6865](https://github.com/apache/incubator-superset/pull/6865) Update docs for pinot support (#6865) (@agrawaldevesh)
- [#6845](https://github.com/apache/incubator-superset/pull/6845) [main] Disable resetting main DB attributes (#6845) (@john-bodley)
- [#6870](https://github.com/apache/incubator-superset/pull/6870) Docs: update user list in README (#6870) (@haaspt)
- [#6832](https://github.com/apache/incubator-superset/pull/6832) Adding chart-id to chartrenderer (#6832) (@kakoni)
- [#6848](https://github.com/apache/incubator-superset/pull/6848) Adding BigQuery to the list of supported DBs. (#6848) (@pabloem)
- [#6854](https://github.com/apache/incubator-superset/pull/6854) Bump FAB to 1.12.3 (#6854) (@mistercrunch)
- [#6852](https://github.com/apache/incubator-superset/pull/6852) Fixing issue where tooltip gets hidden on dashboard for all charts (#6852) (@michellethomas)
- [#6840](https://github.com/apache/incubator-superset/pull/6840) [config] clarifications around SUPERSET_WEBSERVER_TIMEOUT (#6840) (@mistercrunch)
- [#6844](https://github.com/apache/incubator-superset/pull/6844) fix dist-bar overflow css (#6844) (@kristw)
- [#6828](https://github.com/apache/incubator-superset/pull/6828) Add check for invalid color scheme (#6828) (@kristw)
- [#6839](https://github.com/apache/incubator-superset/pull/6839) Use SuperChart from package and remove one in apache (#6839) (@kristw)
- [#6830](https://github.com/apache/incubator-superset/pull/6830) update @superset-ui/packages (#6830) (@kristw)
- [#6829](https://github.com/apache/incubator-superset/pull/6829) Fix line chart overflowing the right side (#6829) (@kristw)
- [#6815](https://github.com/apache/incubator-superset/pull/6815) Make the target path of the superset logo configuable (#6815) (@xtinec)
- [#6823](https://github.com/apache/incubator-superset/pull/6823) Backend only tagging system (#6823) (@betodealmeida)
- [#6802](https://github.com/apache/incubator-superset/pull/6802) Removing additional unguarded calls to JSON.stringify (#6802) (@mrmcduff)
- [#6826](https://github.com/apache/incubator-superset/pull/6826) added docs on proper function call for db mutator (#6826) (@hughhhh)
- [#6719](https://github.com/apache/incubator-superset/pull/6719) Adding support for Pinot (#6719) (@agrawaldevesh)
- [#6811](https://github.com/apache/incubator-superset/pull/6811) Add .standalone class to <body> when in standalone mode (#6811) (@raphaelmerx)
- [#6793](https://github.com/apache/incubator-superset/pull/6793) [sql lab] improve table name detection in free form SQL (#6793) (@mistercrunch)
- [#6722](https://github.com/apache/incubator-superset/pull/6722) SelectControl hackery: Fixing freeform select and allowing group by and non group-by column selectors to take in arbitrary expressions including select-all semantics. (#6722) (@agrawaldevesh)
- [#5445](https://github.com/apache/incubator-superset/pull/5445) [wtforms] Using wtforms-json which supports None (#5445) (@john-bodley)
- [#6809](https://github.com/apache/incubator-superset/pull/6809) Add Korean translations (#6809) (@wonjin911)
- [#6745](https://github.com/apache/incubator-superset/pull/6745) Omnibar (#6745) (@hughhhh)
- [#6721](https://github.com/apache/incubator-superset/pull/6721) Summary: Introduce configs for default relative end time and the epoch-tz (#6721) (@agrawaldevesh)
### 0.29.0rc1 (2018/10/31 ??:?? +00:00)
- [#6223](https://github.com/apache/incubator-superset/pull/6223) Fix time range filter dropdown (#6223)(@michellethomas)
- [#6233](https://github.com/apache/incubator-superset/pull/6233) [fix] typo until (#6233)(@graceguo-supercat)
- [#6226](https://github.com/apache/incubator-superset/pull/6226) fix bug : docker build error with no permission with this floder (#6226)(@kk580kk)
- [#6219](https://github.com/apache/incubator-superset/pull/6219) A few setup.py improvements, removing future lib (#6219)(@mistercrunch)
- [#6221](https://github.com/apache/incubator-superset/pull/6221) [fix][Annotation] Fix override since/until for annotation (#6221)(@graceguo-supercat)
- [#6212](https://github.com/apache/incubator-superset/pull/6212) partition and clustering bigquery keys (#6212)(@sumedhsakdeo)
- [#6198](https://github.com/apache/incubator-superset/pull/6198) [deck] allow an array of dynamic of aggregations (#6198)(@mistercrunch)
- [#6071](https://github.com/apache/incubator-superset/pull/6071) [setup.py] allow for range on boto library (#6071)(@mistercrunch)
- [#6201](https://github.com/apache/incubator-superset/pull/6201) [build] fix pip install issues on OSX High Sierra (#6201)(@mistercrunch)
- [#6171](https://github.com/apache/incubator-superset/pull/6171) [explore] Include "Autocomplete Query Predicate" field to Table Editor None (#6171)(@mistercrunch)
- [#6209](https://github.com/apache/incubator-superset/pull/6209) i18nApp) syntax errors detected by Grammarly while translating (#6209)(@joebordes)
- [#6210](https://github.com/apache/incubator-superset/pull/6210) Update ISSUE_TEMPLATE.md (#6210)(@superkd37)
- [#6204](https://github.com/apache/incubator-superset/pull/6204) [fix] hide annotation layer (#6204)(@graceguo-supercat)
- [#6205](https://github.com/apache/incubator-superset/pull/6205) [fix] should set chartUpdateEndTime when chart fetch failed or stopped None (#6205)(@graceguo-supercat)
- [#6154](https://github.com/apache/incubator-superset/pull/6154) Implement SuperChart and enable the chart plugins (#6154)(@kristw)
- [#6193](https://github.com/apache/incubator-superset/pull/6193) Fix typo in load-examples command (#6193)(@maxg203)
- [#6167](https://github.com/apache/incubator-superset/pull/6167) Update docker-init.sh (#6167)(@haolong7)
- [#6196](https://github.com/apache/incubator-superset/pull/6196) [external-metadata] Fix unknown column types (#6196)(@john-bodley)
- [#6194](https://github.com/apache/incubator-superset/pull/6194) fix sql lab permission issue (#6194)(@youngyjd)
- [#6191](https://github.com/apache/incubator-superset/pull/6191) [datasource-editor] Correcting tooltip (#6191)(@john-bodley)
- [#6169](https://github.com/apache/incubator-superset/pull/6169) add error details into log (#6169)(@graceguo-supercat)
- [#6185](https://github.com/apache/incubator-superset/pull/6185) add get_data method to IFrameViz (#6185)(@MikeRoetgers)
- [#6189](https://github.com/apache/incubator-superset/pull/6189) [dashboard][bugfix][save as] re-direct to copied dashboard upon saveas None (#6189)(@williaster)
- [#6183](https://github.com/apache/incubator-superset/pull/6183) pass width and height (#6183)(@kristw)
- [#6180](https://github.com/apache/incubator-superset/pull/6180) [sqllab] more robust copy to clipboard (#6180)(@williaster)
- [#6178](https://github.com/apache/incubator-superset/pull/6178) Improvements to the polygon spatial viz (#6178)(@betodealmeida)
- [#6181](https://github.com/apache/incubator-superset/pull/6181) [fix] should allow force refresh when having charts under tab (#6181)(@graceguo-supercat)
- [#6139](https://github.com/apache/incubator-superset/pull/6139) Update CHANGELOG from 0.26 to 0.28.1 (#6139)(@mistercrunch)
- [#6179](https://github.com/apache/incubator-superset/pull/6179) [superset-client][bugfix] fix stop query (#6179)(@williaster)
- [#6034](https://github.com/apache/incubator-superset/pull/6034) [Ready][Dashboard] disable force refresh when chart is still loading (#6034)(@graceguo-supercat)
- [#6117](https://github.com/apache/incubator-superset/pull/6117) Add TrustMedis to the userlist (#6117)(@famasya)
- [#6120](https://github.com/apache/incubator-superset/pull/6120) [SIP-9] Introduce TypeScript (#6120)(@xtinec)
### test_tag (2019/02/01 23:07 +00:00)
- [#6805](https://github.com/apache/incubator-superset/pull/6805) Merge pull request #6805 from lyft/xtinec--fix-sticky-tooltip (@lyft)
- [#6801](https://github.com/apache/incubator-superset/pull/6801) Add missing license (#6801) (@mistercrunch)
- [#6781](https://github.com/apache/incubator-superset/pull/6781) Merge pull request #6781 from lyft/xtinec--merge-feature-flags (@lyft)
- [501340b](https://github.com/apache/incubator-superset/commit/501340b5db07d0ec1711dccf0a7e4669fde77192) Fix sticky tooltips on nvd3 vizzes (@xtinec)
- [19b3753](https://github.com/apache/incubator-superset/commit/19b3753d2c4dd6826f73feeb9db253edf9761c28) Move feature flag utility function into superset/__init__.py (@xtinec)
- [#6800](https://github.com/apache/incubator-superset/pull/6800) fix: don't remove leading new line (#6800) (@AlexRRR)
- [#6783](https://github.com/apache/incubator-superset/pull/6783) [cosmetic] TableSelector use <i> instead of <Button> for refresh (#6783) (@mistercrunch)
- [#6797](https://github.com/apache/incubator-superset/pull/6797) Merge pull request #6797 from lyft/VIZ-187 (@lyft)
- [a09348d](https://github.com/apache/incubator-superset/commit/a09348d0ec27463a394d9914dcd5cbfd5670a5ee) Fix playslider (@betodealmeida)
- [#6790](https://github.com/apache/incubator-superset/pull/6790) Add Korean Translation (#6790) (@wonjin911)
- [#6777](https://github.com/apache/incubator-superset/pull/6777) Revert "Removing uniqueness constraints on tables table" (#6777) (@john-bodley)
- [b70a9ae](https://github.com/apache/incubator-superset/commit/b70a9ae524ce4ec66695bbc62a0991d98e78e6df) Merge default feature flags and user defined feature flags (@xtinec)
- [#6764](https://github.com/apache/incubator-superset/pull/6764) Allow any column to be filterable or groupable (#6764) (@agrawaldevesh)
- [#6782](https://github.com/apache/incubator-superset/pull/6782) [sql lab] fix stuck offline (#6782) (@mistercrunch)
### 0.29.0rc8 (2019/01/30 05:37 +00:00)
- [#6772](https://github.com/apache/incubator-superset/pull/6772) creating new circular-json safe stringify and replacing one call (#6772) (@mrmcduff)
- [#6690](https://github.com/apache/incubator-superset/pull/6690) Improve Unicode support for MSSQL (#6690) (@villebro)
- [#6718](https://github.com/apache/incubator-superset/pull/6718) Fix uniqueness constraints on tables table (#6718) (@agrawaldevesh)
- [#6762](https://github.com/apache/incubator-superset/pull/6762) fix #6760 (#6762) (@wonjin911)
- [#6766](https://github.com/apache/incubator-superset/pull/6766) [docs] improve upgrading instructions (#6766) (@mistercrunch)
- [#6769](https://github.com/apache/incubator-superset/pull/6769) [fix] Add action for update chart id (#6769) (@graceguo-supercat)
- [#6765](https://github.com/apache/incubator-superset/pull/6765) [fix] `pandas`>=0.24.0 datetimelike API changes (#6765) (@zihengCat)
- [#6755](https://github.com/apache/incubator-superset/pull/6755) [docs] bump cryptography lib version in docs (#6755) (@mistercrunch)
- [#6754](https://github.com/apache/incubator-superset/pull/6754) [cosmetic] Align table sort icons to the left (#6754) (@mistercrunch)
- [#6358](https://github.com/apache/incubator-superset/pull/6358) Fixing sort issue with area chart and adding tests (#6358) (@michellethomas)
- [#6756](https://github.com/apache/incubator-superset/pull/6756) fix dashboard links in welcome page (#6756) (@hughhhh)
- [#6758](https://github.com/apache/incubator-superset/pull/6758) Update User List in README.md (#6758) (@davidkohcw)
- [#6751](https://github.com/apache/incubator-superset/pull/6751) bump PyHive version for prod requirements.txt (#6751) (@MarcusSorealheis)
- [#6752](https://github.com/apache/incubator-superset/pull/6752) [fix] JS error out when rename a new chart (#6752) (@graceguo-supercat)
- [#6546](https://github.com/apache/incubator-superset/pull/6546) Make it easier to select dropdown options in control tests (#6546) (@michellethomas)
- [#6720](https://github.com/apache/incubator-superset/pull/6720) A few fixes for Presto connection (#6720) (@agrawaldevesh)
- [#6725](https://github.com/apache/incubator-superset/pull/6725) [cosmetic] remove 'List' prefix from list headers (#6725) (@mistercrunch)
- [#6741](https://github.com/apache/incubator-superset/pull/6741) Add iframe and markup legacy plugin (#6741) (@kristw)
- [#6742](https://github.com/apache/incubator-superset/pull/6742) Update gitignore (#6742) (@kristw)
- [#6730](https://github.com/apache/incubator-superset/pull/6730) Adding a note about 0.30 to updating (#6730) (@michellethomas)
- [#6740](https://github.com/apache/incubator-superset/pull/6740) Remove test URL (#6740) (@betodealmeida)
- [#6739](https://github.com/apache/incubator-superset/pull/6739) Allow specifying custom width for logo (#6739) (@betodealmeida)
- [#6738](https://github.com/apache/incubator-superset/pull/6738) Add disclaimer and remove counter (#6738) (@bolkedebruin)
- [#6732](https://github.com/apache/incubator-superset/pull/6732) Add licenses to translations (#6732) (@bolkedebruin)
- [#6526](https://github.com/apache/incubator-superset/pull/6526) Hotkeys in Explore View (#6526) (@hughhhh)
- [#6731](https://github.com/apache/incubator-superset/pull/6731) Add cc-by 4.0 for geojson files (#6731) (@bolkedebruin)
- [#6696](https://github.com/apache/incubator-superset/pull/6696) Making thrift, pyhive and tableschema as extra_requires (#6696) (@mistercrunch)
- [#6701](https://github.com/apache/incubator-superset/pull/6701) Update CONTRIBUTING.md based on SIP-13 and add how to use labels (#6701) (@kristw)
- [#6677](https://github.com/apache/incubator-superset/pull/6677) Fix setup.py ASF issues (#6677) (@bolkedebruin)
- [#6698](https://github.com/apache/incubator-superset/pull/6698) Fix link to SQLAlchemy docs about database URLs format (#6698) (@akovalyov)
- [#6631](https://github.com/apache/incubator-superset/pull/6631) Revert "Truncate long labels (#6631)" (#6723) (@mistercrunch)
- [#6729](https://github.com/apache/incubator-superset/pull/6729) Merge heads (#6729) (@betodealmeida)
- [#6695](https://github.com/apache/incubator-superset/pull/6695) Allow empty results in Hive (from SET, eg) (#6695) (@betodealmeida)
- [#6717](https://github.com/apache/incubator-superset/pull/6717) Insert a space after auto complete (#6717) (@betodealmeida)
- [#6686](https://github.com/apache/incubator-superset/pull/6686) Expose more columns in saved queries API (#6686) (@betodealmeida)
- [#6687](https://github.com/apache/incubator-superset/pull/6687) Add `extra` column to `SavedQuery` (#6687) (@betodealmeida)
- [#5827](https://github.com/apache/incubator-superset/pull/5827) Improve support for BigQuery, Redshift, Oracle, Db2, Snowflake (#5827) (@villebro)
- [#6693](https://github.com/apache/incubator-superset/pull/6693) Explicitly declare flags as flags (#6693) (@jeffreythewang)
- [#6627](https://github.com/apache/incubator-superset/pull/6627) [cosmetic] remove margin-bottom on dropdowns (#6627) (@mistercrunch)
- [#6711](https://github.com/apache/incubator-superset/pull/6711) More ASF licenses (css + html/jinja) (#6711) (@mistercrunch)
- [#6670](https://github.com/apache/incubator-superset/pull/6670) Add universal "New" button (#6670) (@mistercrunch)
- [#6703](https://github.com/apache/incubator-superset/pull/6703) Trim query before parsing (#6703) (@betodealmeida)
- [#6709](https://github.com/apache/incubator-superset/pull/6709) Add more format shims (#6709) (@kristw)
- [#6702](https://github.com/apache/incubator-superset/pull/6702) Fix Text field to edit SQL snippet of a metric is not large enough (#6702) (@soboko)
- [#5461](https://github.com/apache/incubator-superset/pull/5461) Deprecate auto-generated metrics (#5461) (@mistercrunch)
- [#6699](https://github.com/apache/incubator-superset/pull/6699) Fix url_param macro when param is missing (#6699) (@mistercrunch)
- [#6700](https://github.com/apache/incubator-superset/pull/6700) Bump some of the requirements-dev.txt (#6700) (@mistercrunch)
- [#6682](https://github.com/apache/incubator-superset/pull/6682) Update README.md (#6682) (@Yukinoshita-Yukino)
- [#5800](https://github.com/apache/incubator-superset/pull/5800) Apply ASF licenses throughout the code base (#5800) (@mistercrunch)
- [#6046](https://github.com/apache/incubator-superset/pull/6046) [table editor] allow selecting physical table (#6046) (@mistercrunch)
- [#6689](https://github.com/apache/incubator-superset/pull/6689) Committing some licenses to fix master (#6689) (@mistercrunch)
- [#6591](https://github.com/apache/incubator-superset/pull/6591) Fix for #6590: Numeric values in columns sometimes returned as quoted strings (#6591) (@soboko)
- [#6600](https://github.com/apache/incubator-superset/pull/6600) Add doc about translation using poedit (#6600) (@zhouyao1994)
- [#6631](https://github.com/apache/incubator-superset/pull/6631) Truncate long labels (#6631) (@betodealmeida)
- [#6436](https://github.com/apache/incubator-superset/pull/6436) [bugfix] show results in query history & revert #5848 (#6436) (@youngyjd)
- [#6621](https://github.com/apache/incubator-superset/pull/6621) Add fix for pyodbc+mssql (#6621) (@chinhngt)
- [#6673](https://github.com/apache/incubator-superset/pull/6673) Remove dep on unidecode (#6673) (@mistercrunch)
- [#6678](https://github.com/apache/incubator-superset/pull/6678) Update Dockerfile (#6678) (@kocomic)
- [#6512](https://github.com/apache/incubator-superset/pull/6512) Fix scheduled reports for mysql (#6512) (@mahendra)
- [#6663](https://github.com/apache/incubator-superset/pull/6663) Add Apache Rat for license checks (#6663) (@bolkedebruin)
- [#6671](https://github.com/apache/incubator-superset/pull/6671) Add NOTICE file and include initial third party licenses (#6671) (@bolkedebruin)
- [#6669](https://github.com/apache/incubator-superset/pull/6669) Remove bad git conflicts from Readme (#6669) (@kaxil)
- [#6617](https://github.com/apache/incubator-superset/pull/6617) #6588 Clear all other query tabs (#6617) (@zhaoyongjie)
- [#6629](https://github.com/apache/incubator-superset/pull/6629) [README] use a numbered list instead of bullets for org list (#6629) (@mistercrunch)
- [#6523](https://github.com/apache/incubator-superset/pull/6523) Improving Filter Box (#6523) (@mistercrunch)
- [#6662](https://github.com/apache/incubator-superset/pull/6662) Minor doc fix for superset (#6662) (@feng-tao)
- [#6628](https://github.com/apache/incubator-superset/pull/6628) [pie] allow formating nubmers on pie chart (#6628) (@mistercrunch)
- [#6497](https://github.com/apache/incubator-superset/pull/6497) pass source to db api mutator (#6497) (@timifasubaa)
- [#6630](https://github.com/apache/incubator-superset/pull/6630) Add kuaishou to README.md (#6630) (@zhaoyu89730105)
- [#6614](https://github.com/apache/incubator-superset/pull/6614) data point no clipEdge (#6614) (@zhaoyu89730105)
- [#6625](https://github.com/apache/incubator-superset/pull/6625) Bump requirements (#6625) (@mahendra)
- [#6626](https://github.com/apache/incubator-superset/pull/6626) Improve padding in NVD3Vis (#6626) (@betodealmeida)
- [#6607](https://github.com/apache/incubator-superset/pull/6607) Upgrade webpack-dev-server to fix 'npm audit' issue (#6607) (@mistercrunch)
- [#6578](https://github.com/apache/incubator-superset/pull/6578) Improve false negative on AlteredSliceTag (#6578) (@mistercrunch)
- [#6593](https://github.com/apache/incubator-superset/pull/6593) Introduce a more visible resize grabber to the SQL editor (#6593) (@xtinec)
- [#6271](https://github.com/apache/incubator-superset/pull/6271) fix(i18n) syntax errors detected by grammarly while translating (#6271) (@joebordes)
- [#6609](https://github.com/apache/incubator-superset/pull/6609) Upgrade gsheetsdb (#6609) (@betodealmeida)
- [#6003](https://github.com/apache/incubator-superset/pull/6003) Make NULL value grouping keys show up properly in rich tooltip (#6003) (@hmanuel)
- [#6449](https://github.com/apache/incubator-superset/pull/6449) [fix] url shortner for long explore url (#6449) (@graceguo-supercat)
- [#6574](https://github.com/apache/incubator-superset/pull/6574) Fix 'Uncaught TypeError: Cannot read property 'value' of undefined' #6556 (#6574) (@mistercrunch)
- [#6596](https://github.com/apache/incubator-superset/pull/6596) shift labels down along y-axis (#6596) (@MarcusSorealheis)
- [#6598](https://github.com/apache/incubator-superset/pull/6598) Fix bug: some word not translate in js. (#6598) (@zhouyao1994)
- [#6592](https://github.com/apache/incubator-superset/pull/6592) add chinese translate (#6592) (@zhouyao1994)
- [#6504](https://github.com/apache/incubator-superset/pull/6504) Enhance Docker (#6504) (@oliviermichaelis)
- [#6573](https://github.com/apache/incubator-superset/pull/6573) Finish move to babel 7 (#6573) (@mistercrunch)
- [#6581](https://github.com/apache/incubator-superset/pull/6581) Using batch_op in db migration 0b1f1ab473c0 (#6581) (@mistercrunch)
- [#6576](https://github.com/apache/incubator-superset/pull/6576) [bugfix] moving from reactable to reactable-arc fork (#6576) (@mistercrunch)
- [#6575](https://github.com/apache/incubator-superset/pull/6575) Change margin for slice description in charts for the dashboard view (#6575) (@BrayanArrieta)
- [#6580](https://github.com/apache/incubator-superset/pull/6580) fixing issue #6572 with Oracle date handling (#6580) (@ghsalem)
- [#6564](https://github.com/apache/incubator-superset/pull/6564) [design] use angle icons instead of carets for expandable panels (#6564) (@mistercrunch)
- [#6571](https://github.com/apache/incubator-superset/pull/6571) Fix multi/dual when no right y axis (#6571) (@betodealmeida)
- [#6516](https://github.com/apache/incubator-superset/pull/6516) Fix: updated required cryptography version to 2.4.2 to resolve #6509 (#6516) (@haaspt)
- [#6569](https://github.com/apache/incubator-superset/pull/6569) fix #6530 and add some other chinese translation (#6569) (@shizidushu)
- [#6563](https://github.com/apache/incubator-superset/pull/6563) json_iso_dttm_ser use for TableViz (#6563) (@kakoni)
- [#5769](https://github.com/apache/incubator-superset/pull/5769) [refactor] moving some datasource-related code to the frontend (#5769) (@mistercrunch)
- [#6567](https://github.com/apache/incubator-superset/pull/6567) Adding missing slash (#6567) (@kakoni)
- [#6112](https://github.com/apache/incubator-superset/pull/6112) [SQL Lab] Allow running multiple statements (#6112) (@mistercrunch)
- [#6540](https://github.com/apache/incubator-superset/pull/6540) Make boto3/botocore installation optional (#6540) (@mistercrunch)
- [#6541](https://github.com/apache/incubator-superset/pull/6541) [SIP-14] remove dependency on yarn in favor of npm (#6541) (@mistercrunch)
- [#6560](https://github.com/apache/incubator-superset/pull/6560) Fix multiple db_migrations heads (#6560) (@mistercrunch)
- [#6544](https://github.com/apache/incubator-superset/pull/6544) Make owner a m2m relation on datasources (#6544) (@leakingoxide)
- [#6550](https://github.com/apache/incubator-superset/pull/6550) minor, auto tune debug mode when use flask_env (#6550) (@zhaoyongjie)
- [#6519](https://github.com/apache/incubator-superset/pull/6519) [RfC] Fix URL too long (#6519) (@mistercrunch)
- [#6522](https://github.com/apache/incubator-superset/pull/6522) [cosmetic] add css no-wrap on CRUD's last modified (#6522) (@mistercrunch)
- [#6553](https://github.com/apache/incubator-superset/pull/6553) Secure unsecured views and prevent regressions (#6553) (@mistercrunch)
- [#6545](https://github.com/apache/incubator-superset/pull/6545) Fix deck.gl Polygon not show (#6545) (@MukaJiTrue)
- [#6551](https://github.com/apache/incubator-superset/pull/6551) fix addr_str format bug (#6551) (@DoNobody)
- [#6532](https://github.com/apache/incubator-superset/pull/6532) Increase size of column `name` in table `ab_view_meu` (#6532) (@betodealmeida)
- [#6548](https://github.com/apache/incubator-superset/pull/6548) Pass security manager to QUERY_LOGGER (#6548) (@betodealmeida)
- [#5977](https://github.com/apache/incubator-superset/pull/5977) filter_values documentation fix (#5977) (@AMilkov)
- [#6398](https://github.com/apache/incubator-superset/pull/6398) Remove note about snowflake-sqlalchemy stable version regression (#6398) (@villebro)
- [#6549](https://github.com/apache/incubator-superset/pull/6549) Documentation Correction to use http.server for Python3 (#6549) (@chnkya)
- [#6534](https://github.com/apache/incubator-superset/pull/6534) Fix string value displaying NaN (#6534) (@wenchma)
- [#6547](https://github.com/apache/incubator-superset/pull/6547) adding in a dependency version to fix an error with Flask CLI (#6547) (@MarcusSorealheis)
- [#6507](https://github.com/apache/incubator-superset/pull/6507) Add docker files to gitignore (#6507) (@hughhhh)
- [#6539](https://github.com/apache/incubator-superset/pull/6539) Refactor teradata to new time_grain_functions spec (#6539) (@villebro)
- [#6536](https://github.com/apache/incubator-superset/pull/6536) Avoid resetting margin to 0 (#6536) (@michellethomas)
- [#6531](https://github.com/apache/incubator-superset/pull/6531) [warm] Enforcing consistent form-data (#6531) (@john-bodley)
- [#6510](https://github.com/apache/incubator-superset/pull/6510) Update requests version (#6510) (@betodealmeida)
- [#6409](https://github.com/apache/incubator-superset/pull/6409) Fix malformed table in docs/visualization.rst (#6409) (@sekikn)
- [#6513](https://github.com/apache/incubator-superset/pull/6513) Update contributing.md with latest local dev instructions (#6513) (@kristw)
- [#6087](https://github.com/apache/incubator-superset/pull/6087) Typo: Fixed link (#6087) (@httpsOmkar)
- [#5294](https://github.com/apache/incubator-superset/pull/5294) [SIP-3] Scheduled email reports for Slices / Dashboards (#5294) (@mahendra)
- [#5915](https://github.com/apache/incubator-superset/pull/5915) Google spreadsheets (#5915) (@betodealmeida)
- [#6498](https://github.com/apache/incubator-superset/pull/6498) Adding tests for time table, formatting, and annotations (#6498) (@michellethomas)
- [#6457](https://github.com/apache/incubator-superset/pull/6457) Fix Annotation (#6457) (@aboganas)
- [#6493](https://github.com/apache/incubator-superset/pull/6493) Pypi has a 60mb package size limit, and we're over (#6493) (@mistercrunch)
- [#6454](https://github.com/apache/incubator-superset/pull/6454) Bump pydruid to 0.5.0 (#6454) (@mistercrunch)
- [#6484](https://github.com/apache/incubator-superset/pull/6484) Hook for auditing queries (#6484) (@betodealmeida)
- [#6461](https://github.com/apache/incubator-superset/pull/6461) Add copy to clipboard buttons in explore and sqllab (#6461) (@leakingoxide)
- [#6483](https://github.com/apache/incubator-superset/pull/6483) [Bug Fix]Prevent re-rendering when non-instant controls change (#6483) (@conglei)
### 0.29.0rc6 (2018/12/05 19:27 +00:00)
- [#6432](https://github.com/apache/incubator-superset/pull/6432) FixBug druidMetricModels No attribute get_perm (#6432) (@zhaoyu89730105)
- [#6430](https://github.com/apache/incubator-superset/pull/6430) Add See Tableview Form button to the Datasource Editor modal (#6430) (@leakingoxide)
- [#6485](https://github.com/apache/incubator-superset/pull/6485) make loading icon bigger (#6485) (@youngyjd)
- [#6470](https://github.com/apache/incubator-superset/pull/6470) Use @superset-ui/number-format and @superset-ui/time-format for formatting. (#6470) (@kristw)
- [#6448](https://github.com/apache/incubator-superset/pull/6448) Use py3's f-strings instead of s.format(**locals()) (#6448) (@mistercrunch)
### 0.29.0rc5 (2018/12/01 20:39 +00:00)
- [#6469](https://github.com/apache/incubator-superset/pull/6469) Update sqllab.rst (#6469) (@mrshu)
- [#5039](https://github.com/apache/incubator-superset/pull/5039) allow domain sharding in frontend (#5039) (@graceguo-supercat)
- [#6464](https://github.com/apache/incubator-superset/pull/6464) Update `@superset-ui/colors` (#6464) (@kristw)
- [#6423](https://github.com/apache/incubator-superset/pull/6423) [SIP-5] Build metrics in query_object in the client (#6423) (@williaster)
- [#6465](https://github.com/apache/incubator-superset/pull/6465) Fixing error when clearing big number (#6465) (@michellethomas)
- [#6376](https://github.com/apache/incubator-superset/pull/6376) [READY] Update SuperChart onRenderXXX listeners (#6376) (@kristw)
- [e06f873](https://github.com/apache/incubator-superset/commit/e06f87304c4448eeb2ca80ff34468f4d620572bd) Adding a comment for metrictype values (@xtinec)
- [c11e9c8](https://github.com/apache/incubator-superset/commit/c11e9c8b675340a1349dce105257375f6acbcaee) [SIP-5] Build metrics in query_object in the client (@xtinec)
- [a4597af](https://github.com/apache/incubator-superset/commit/a4597afee0ca368110cf76f81c7016a6b609b492) addressing PR comments (@xtinec)
- [#6458](https://github.com/apache/incubator-superset/pull/6458) fix metadata cache bug (#6458) (@youngyjd)
- [#6459](https://github.com/apache/incubator-superset/pull/6459) override get_view_names in PrestoEngineSpec (#6459) (@youngyjd)
- [#6453](https://github.com/apache/incubator-superset/pull/6453) Ensure that dttm is of same timezone as epoch_with_tz (#6453) (@villebro)
- [#6444](https://github.com/apache/incubator-superset/pull/6444) replace missing round function in d3 to fix MapBox (#6444) (@aboganas)
- [#4961](https://github.com/apache/incubator-superset/pull/4961) Deprecate database attribute allow_run_sync (#4961) (@mistercrunch)
- [#6445](https://github.com/apache/incubator-superset/pull/6445) fix Calendar Heatmap (#6445) (@aboganas)
- [#6451](https://github.com/apache/incubator-superset/pull/6451) fix sunburst breadcrumbs (#6451) (@aboganas)
- [#6419](https://github.com/apache/incubator-superset/pull/6419) Rename Druid to Apache Druid (Incubating) (#6419) (@Fokko)
- [#6401](https://github.com/apache/incubator-superset/pull/6401) [Docs] Make sure venv is py3 and export app (#6401) (@hughhhh)
- [#5966](https://github.com/apache/incubator-superset/pull/5966) Improve development experience with Docker (#5966) (@victornoel)
- [#6438](https://github.com/apache/incubator-superset/pull/6438) [fix] edit chart title cause JS error (#6438) (@graceguo-supercat)
- [#5164](https://github.com/apache/incubator-superset/pull/5164) Remove coordinator in Druid Cluster config (#5164) (#6443) (@jiaz)
- [#6439](https://github.com/apache/incubator-superset/pull/6439) Grammatical Error (#6439) (@pavitranrambo)
- [#6422](https://github.com/apache/incubator-superset/pull/6422) [logging] Add render failure error into log (#6422) (@graceguo-supercat)
- [#6428](https://github.com/apache/incubator-superset/pull/6428) Updated local dev instructions to include missing step (#6428) (@craig-rueda)
- [#6417](https://github.com/apache/incubator-superset/pull/6417) [bugfix] Display raw value in addition to ERROR (#6417) (@kristw)
- [#6433](https://github.com/apache/incubator-superset/pull/6433) FixBug sqlMetricModels No attribute get_perm (#6433) (@zhaoyu89730105)
- [#6435](https://github.com/apache/incubator-superset/pull/6435) Fix French typos (#6435) (@cjauvin)
- [#6406](https://github.com/apache/incubator-superset/pull/6406) Link to the ASF's code of conduct (#6406) (@mistercrunch)
- [#6412](https://github.com/apache/incubator-superset/pull/6412) use same xaxis formatter for line chart tooltip (#6412) (@kristw)
- [#6298](https://github.com/apache/incubator-superset/pull/6298) Reduce data loaded before loading tests (#6298) (@timifasubaa)
- [#6410](https://github.com/apache/incubator-superset/pull/6410) Update README.md (#6410) (@evans)
- [#6365](https://github.com/apache/incubator-superset/pull/6365) [bugfix] deckgl legend is not interactive (#6365) (@mistercrunch)
- [#6391](https://github.com/apache/incubator-superset/pull/6391) Minor improvements to Histogram viz (#6391) (@mistercrunch)
- [#6407](https://github.com/apache/incubator-superset/pull/6407) Adding cypress tests for showing errors, time range filter, and verbose name (#6407) (@michellethomas)
- [#6364](https://github.com/apache/incubator-superset/pull/6364) 'Fligth' filename typo (#6364) (@andy-clapson)
- [#6388](https://github.com/apache/incubator-superset/pull/6388) Expose Sqllab status in databases list view (#6388) (@zhaoyongjie)
- [#6405](https://github.com/apache/incubator-superset/pull/6405) [fix] view results in sql lab (#6405) (@graceguo-supercat)
- [#6363](https://github.com/apache/incubator-superset/pull/6363) [bugfix] deck.gl grid&hex don't respond to zoom&drag (#6363) (@mistercrunch)
- [#6399](https://github.com/apache/incubator-superset/pull/6399) Fix adhoc metrics in Polygon (#6399) (@mistercrunch)
- [#6377](https://github.com/apache/incubator-superset/pull/6377) [SIP-5] QueryBuilder in the client for granularity and groupby in word cloud (#6377) (@xtinec)
- [#6378](https://github.com/apache/incubator-superset/pull/6378) [migration]clean up __from and __to parameters in dashboard json_metadata (#6378) (@graceguo-supercat)
- [#6400](https://github.com/apache/incubator-superset/pull/6400) Set default limit on creation of new qe and on run (#6400) (@jeffreythewang)
- [#6241](https://github.com/apache/incubator-superset/pull/6241) Split cypress tests (#6241) (@timifasubaa)
- [#6393](https://github.com/apache/incubator-superset/pull/6393) [fix] JS error after delete row level tab (#6393) (@graceguo-supercat)
- [#6368](https://github.com/apache/incubator-superset/pull/6368) Add Japan country map (#6368) (@sekikn)
- [#6302](https://github.com/apache/incubator-superset/pull/6302) Disable flaky cypress SQL Lab test (#6302) (@mistercrunch)
- [#6370](https://github.com/apache/incubator-superset/pull/6370) Update the installation document based on Python 3.6+ (#6370) (@sekikn)
- [#6386](https://github.com/apache/incubator-superset/pull/6386) [bugfix] prevent d3-format from raising (#6386) (@mistercrunch)
- [#6384](https://github.com/apache/incubator-superset/pull/6384) do not convert value to lowercase when looking up color (#6384) (@kristw)
- [#6345](https://github.com/apache/incubator-superset/pull/6345) remove user params (#6345) (@timifasubaa)
- [#6375](https://github.com/apache/incubator-superset/pull/6375) Fixed the cache issue for BigNumber (#6375) (@conglei)
### 0.29.0rc4 (2018/11/12 18:54 +00:00)
- [#6374](https://github.com/apache/incubator-superset/pull/6374) [bugfix] visualization flickers when rerunning query (#6374) (@mistercrunch)
- [#6367](https://github.com/apache/incubator-superset/pull/6367) [bugfix] EventFlow does not display (#6367) (@jnishiyama)
- [#6355](https://github.com/apache/incubator-superset/pull/6355) [404] Aborting for views with invalid dashboard/slice IDs (#6355) (@john-bodley)
- [#6357](https://github.com/apache/incubator-superset/pull/6357) [hive] Fixing where lastest partition logic (#6357) (@john-bodley)
- [#6361](https://github.com/apache/incubator-superset/pull/6361) [cypress] Test dashboard save/save_as functions (#6361) (@graceguo-supercat)
- [#6234](https://github.com/apache/incubator-superset/pull/6234) [reviewable] Integrate @superset-ui/{core,color,chart} modules (#6234) (@kristw)
- [#6282](https://github.com/apache/incubator-superset/pull/6282) [nvd3] refactor margins (#6282) (@mistercrunch)
- [#6359](https://github.com/apache/incubator-superset/pull/6359) Parse datasource_id as integer on the server side (#6359) (@xtinec)
### 0.29.0rc3 (2018/11/10 20:39 +00:00)
- [#6287](https://github.com/apache/incubator-superset/pull/6287) [reviewable] Organize d3 utilities usage (#6287) (@kristw)
- [#6350](https://github.com/apache/incubator-superset/pull/6350) [dashboard] fix save/save-as flow (#6350) (@williaster)
- [#6354](https://github.com/apache/incubator-superset/pull/6354) change to camelcase (#6354) (@kristw)
- [#6346](https://github.com/apache/incubator-superset/pull/6346) Update docker-entrypoint.sh (#6346) (@BrayanArrieta)
- [#6349](https://github.com/apache/incubator-superset/pull/6349) [bugfix] don't parse save dashboard response (#6349) (@williaster)
- [#6290](https://github.com/apache/incubator-superset/pull/6290) [reviewable] [refactor] Split visTypes into one file for each visualization type (#6290) (@kristw)
### 0.29.0rc2 (2018/11/08 17:39 +00:00)
- [#6299](https://github.com/apache/incubator-superset/pull/6299) Make stacktraces available in many more cases (#6299) (@mistercrunch)
- [#6308](https://github.com/apache/incubator-superset/pull/6308) Add Showmax among users (#6308) (@bobek)
- [#6293](https://github.com/apache/incubator-superset/pull/6293) [fix warning] Warning: Failed prop type: Invalid prop bsSize of value md (#6293) (@mistercrunch)
- [#6289](https://github.com/apache/incubator-superset/pull/6289) Docker Demo, Port Change (#6289) (@IrfanFaizullabhoy)
- [#6286](https://github.com/apache/incubator-superset/pull/6286) [annotation] Only allow override whole time_range (#6286) (@graceguo-supercat)
- [#6297](https://github.com/apache/incubator-superset/pull/6297) add logging to csv upload (#6297) (@timifasubaa)
- [#6220](https://github.com/apache/incubator-superset/pull/6220) [SIP-5] Open a new /api/v1/query endpoint that takes query_obj (#6220) (@xtinec)
- [#6294](https://github.com/apache/incubator-superset/pull/6294) Wrap <LoadableRenderer /> with <ErrorBoundary /> (#6294) (@mistercrunch)
- [#6260](https://github.com/apache/incubator-superset/pull/6260) Geoviz state management fix (#6260) (@betodealmeida)
- [#4941](https://github.com/apache/incubator-superset/pull/4941) Add separate limit setting for SqlLab (#4941) (@jeffreythewang)
- [#6292](https://github.com/apache/incubator-superset/pull/6292) [bugfix] handle Loading spinner properly (#6292) (@mistercrunch)
- [#6257](https://github.com/apache/incubator-superset/pull/6257) sql lab localStorage config (#6257) (@graceguo-supercat)
- [#6288](https://github.com/apache/incubator-superset/pull/6288) [bugfix] deckgl scatter CategoricalDeckGLContainer (#6288) (@mistercrunch)
- [#6277](https://github.com/apache/incubator-superset/pull/6277) Avoid clearing metric when saving from datasource editor (#6277) (@michellethomas)
- [#6283](https://github.com/apache/incubator-superset/pull/6283) [dashboard] fix spinners disapear too early (#6283) (@mistercrunch)
- [#6280](https://github.com/apache/incubator-superset/pull/6280) Fix Infinity css warning (#6280) (@mistercrunch)
- [#6274](https://github.com/apache/incubator-superset/pull/6274) rename @superset-ui/core to @superset-ui/connection (#6274) (@kristw)
- [#6269](https://github.com/apache/incubator-superset/pull/6269) Adding backwards compatable check to add ago to since if it doesn't exist (#6269) (@michellethomas)
- [#6276](https://github.com/apache/incubator-superset/pull/6276) [superset-client] getClientErrorObject for everyone (#6276) (@williaster)
- [#6273](https://github.com/apache/incubator-superset/pull/6273) Add chart names translation (#6273) (@kristw)
- [#6229](https://github.com/apache/incubator-superset/pull/6229) Fix typo in druid granularity (#6229) (@jeffreythewang)
- [#6252](https://github.com/apache/incubator-superset/pull/6252) [explore] raise attention to row_limit being reached (#6252) (@mistercrunch)
- [#6258](https://github.com/apache/incubator-superset/pull/6258) Dockerfile change because error: E: The method driver /usr/lib/apt/methods/https… (#6258) (@kk580kk)
- [#6270](https://github.com/apache/incubator-superset/pull/6270) i18n(es) (#6270) (@joebordes)
- [#6208](https://github.com/apache/incubator-superset/pull/6208) I18n es002 (#6208) (@joebordes)
- [#6264](https://github.com/apache/incubator-superset/pull/6264) Externally Visible Server (#6264) (@mlboy)
- [#6261](https://github.com/apache/incubator-superset/pull/6261) Remove label and showOnExplore. Specific import validators (#6261) (@kristw)
- [#6251](https://github.com/apache/incubator-superset/pull/6251) [Fix] merge since,until request parameter with time_range (#6251) (@graceguo-supercat)
- [#6235](https://github.com/apache/incubator-superset/pull/6235) Make VizTypeControl use metadata from plugin (#6235) (@kristw)
- [#6259](https://github.com/apache/incubator-superset/pull/6259) Update CONTRIBUTING.md (#6259) (@betodealmeida)
- [#6244](https://github.com/apache/incubator-superset/pull/6244) Setting line chart row_limit to 50000 (#6244) (@michellethomas)
- [#6236](https://github.com/apache/incubator-superset/pull/6236) Dashboard filter box default (#6236) (@michellethomas)
- [#6255](https://github.com/apache/incubator-superset/pull/6255) revert the change in config.py (#6255) (@youngyjd)
- [#6239](https://github.com/apache/incubator-superset/pull/6239) Bump Flask, bleach and sync pip-compile (#6239) (@mistercrunch)
- [#5881](https://github.com/apache/incubator-superset/pull/5881) Fix examples charts/dashboards and refactor (#5881) (@mistercrunch)
- [#6246](https://github.com/apache/incubator-superset/pull/6246) Fixed grammatical errors. (#6246) (@rakshitkumarcse)
- [#6245](https://github.com/apache/incubator-superset/pull/6245) Fixed grammatical errors. (#6245) (@rakshitkumarcse)
- [#6247](https://github.com/apache/incubator-superset/pull/6247) Fixed grammatical errors (#6247) (@rakshitkumarcse)
- [#6248](https://github.com/apache/incubator-superset/pull/6248) Fixed typos and grammatical errors (#6248) (@rakshitkumarcse)
- [#6249](https://github.com/apache/incubator-superset/pull/6249) fixed grammatical errors and typos (#6249) (@rakshitkumarcse)
- [#6250](https://github.com/apache/incubator-superset/pull/6250) Corrected name of an area and fixed major grammatical errors (#6250) (@rakshitkumarcse)
- [#6153](https://github.com/apache/incubator-superset/pull/6153) Move metadata cache one layer up (#6153) (@youngyjd)
- [#6231](https://github.com/apache/incubator-superset/pull/6231) [bugfix] cannot add options to FilterBox (#6231) (@mistercrunch)
- [#6228](https://github.com/apache/incubator-superset/pull/6228) [sql lab] improve placeholder strings for query search form (#6228) (@mistercrunch)
- [#6237](https://github.com/apache/incubator-superset/pull/6237) fix misstake (#6237) (@mlboy)
- [#6195](https://github.com/apache/incubator-superset/pull/6195) [datasource] Ensure SQL Lab link opens in a new tab (#6195) (@john-bodley)
- [#6222](https://github.com/apache/incubator-superset/pull/6222) Integrate translation module @superset-ui/translation (#6222) (@kristw)
### 0.29.0rc1 (2018/10/30 21:22 +00:00)
- [#6223](https://github.com/apache/incubator-superset/pull/6223) Fix time range filter dropdown (#6223) (@michellethomas)
- [#6233](https://github.com/apache/incubator-superset/pull/6233) [fix] typo until (#6233) (@graceguo-supercat)
- [#6226](https://github.com/apache/incubator-superset/pull/6226) fix bug : docker build error with no permission with this floder (#6226) (@kk580kk)
- [#6219](https://github.com/apache/incubator-superset/pull/6219) A few setup.py improvements, removing future lib (#6219) (@mistercrunch)
- [#6221](https://github.com/apache/incubator-superset/pull/6221) [fix][Annotation] Fix override since/until for annotation (#6221) (@graceguo-supercat)
- [#6212](https://github.com/apache/incubator-superset/pull/6212) partition and clustering bigquery keys (#6212) (@sumedhsakdeo)
- [#6198](https://github.com/apache/incubator-superset/pull/6198) [deck] allow an array of dynamic of aggregations (#6198) (@mistercrunch)
- [#6071](https://github.com/apache/incubator-superset/pull/6071) [setup.py] allow for range on boto library (#6071) (@mistercrunch)
- [#6201](https://github.com/apache/incubator-superset/pull/6201) [build] fix pip install issues on OSX High Sierra (#6201) (@mistercrunch)
- [#6171](https://github.com/apache/incubator-superset/pull/6171) [explore] Include "Autocomplete Query Predicate" field to Table Editor (#6171) (@mistercrunch)
- [#6209](https://github.com/apache/incubator-superset/pull/6209) i18n(App) syntax errors detected by Grammarly while translating (#6209) (@joebordes)
- [#6210](https://github.com/apache/incubator-superset/pull/6210) Update ISSUE_TEMPLATE.md (#6210) (@superkd37)
- [#6204](https://github.com/apache/incubator-superset/pull/6204) [fix] hide annotation layer (#6204) (@graceguo-supercat)
- [#6205](https://github.com/apache/incubator-superset/pull/6205) [fix] should set chartUpdateEndTime when chart fetch failed or stopped (#6205) (@graceguo-supercat)
- [#6154](https://github.com/apache/incubator-superset/pull/6154) Implement SuperChart and enable the chart plugins (#6154) (@kristw)
- [#6193](https://github.com/apache/incubator-superset/pull/6193) Fix typo in load-examples command (#6193) (@maxg203)
- [#6167](https://github.com/apache/incubator-superset/pull/6167) Update docker-init.sh (#6167) (@haolong7)
- [#6196](https://github.com/apache/incubator-superset/pull/6196) [external-metadata] Fix unknown column types (#6196) (@john-bodley)
- [#6194](https://github.com/apache/incubator-superset/pull/6194) fix sql lab permission issue (#6194) (@youngyjd)
- [#6191](https://github.com/apache/incubator-superset/pull/6191) [datasource-editor] Correcting tooltip (#6191) (@john-bodley)
- [#6169](https://github.com/apache/incubator-superset/pull/6169) add error details into log (#6169) (@graceguo-supercat)
- [#6185](https://github.com/apache/incubator-superset/pull/6185) add get_data method to IFrameViz (#6185) (@MikeRoetgers)
- [#6189](https://github.com/apache/incubator-superset/pull/6189) [dashboard][bugfix][save as] re-direct to copied dashboard upon saveas (#6189) (@williaster)
- [#6183](https://github.com/apache/incubator-superset/pull/6183) pass width and height (#6183) (@kristw)
- [#6180](https://github.com/apache/incubator-superset/pull/6180) [sqllab] more robust copy to clipboard (#6180) (@williaster)
- [#6178](https://github.com/apache/incubator-superset/pull/6178) Improvements to the polygon spatial viz (#6178) (@betodealmeida)
- [#6181](https://github.com/apache/incubator-superset/pull/6181) [fix] should allow force refresh when having charts under tab (#6181) (@graceguo-supercat)
- [#6139](https://github.com/apache/incubator-superset/pull/6139) Update CHANGELOG from 0.26 to 0.28.1 (#6139) (@mistercrunch)
- [#6179](https://github.com/apache/incubator-superset/pull/6179) [superset-client][bugfix] fix stop query (#6179) (@williaster)
- [#6034](https://github.com/apache/incubator-superset/pull/6034) [Ready][Dashboard] disable force refresh when chart is still loading (#6034) (@graceguo-supercat)
- [#6117](https://github.com/apache/incubator-superset/pull/6117) Add TrustMedis to the userlist (#6117) (@famasya)
- [#6120](https://github.com/apache/incubator-superset/pull/6120) [SIP-9] Introduce TypeScript (#6120) (@xtinec)
- [#6138](https://github.com/apache/incubator-superset/pull/6138) Bump FAB to 1.12.1 (#6138) (@mistercrunch)
- [#6166](https://github.com/apache/incubator-superset/pull/6166) [bugfix] Fix language switch (#6166) (@kristw)
- [#6163](https://github.com/apache/incubator-superset/pull/6163) [superset-client] use getClientErrorObject for client error handling (#6163) (@williaster)
- [#6133](https://github.com/apache/incubator-superset/pull/6133) [superset-client][logger] replace ajax with SupersetClient (#6133) (@williaster)
- [#6013](https://github.com/apache/incubator-superset/pull/6013) [Sqllab] Add offline state to sqllab (#6013) (@timifasubaa)
- [#6150](https://github.com/apache/incubator-superset/pull/6150) [Refactor] Extend color scheme management to sequential schemes (#6150) (@kristw)
- [#6135](https://github.com/apache/incubator-superset/pull/6135) [superset-client] replace misc ajax calls (#6135) (@williaster)
- [#6134](https://github.com/apache/incubator-superset/pull/6134) [superset-client][datasource editor] replace ajax with SupersetClient (#6134) (@williaster)
- [#6144](https://github.com/apache/incubator-superset/pull/6144) Define chart presets (#6144) (@kristw)
- [#6148](https://github.com/apache/incubator-superset/pull/6148) [superset-client] pass csrfToken as configuration (#6148) (@williaster)
- [#6146](https://github.com/apache/incubator-superset/pull/6146) add build query as part of plugin (#6146) (@kristw)
- [#6145](https://github.com/apache/incubator-superset/pull/6145) fix bar chart value overlap with legend (#6145) (@kristw)
- [#6143](https://github.com/apache/incubator-superset/pull/6143) remove reactable from Hotkeys.jsx (#6143) (@kristw)
- [#6136](https://github.com/apache/incubator-superset/pull/6136) Add annotation information to ChartMetadata (#6136) (@kristw)
- [#6125](https://github.com/apache/incubator-superset/pull/6125) [Ready] Define ChartProps data structure (#6125) (@kristw)
- [#6142](https://github.com/apache/incubator-superset/pull/6142) downgrade reactable and remove fastdom (#6142) (@kristw)
- [#6141](https://github.com/apache/incubator-superset/pull/6141) Turning off flaky link tests (#6141) (@michellethomas)
- [#6106](https://github.com/apache/incubator-superset/pull/6106) Remove isNumeric util function and use Number.isFinite instead (#6106) (@kristw)
- [#6123](https://github.com/apache/incubator-superset/pull/6123) change viewport dimension (#6123) (@kristw)
------------------------------
### 0.28.1 (2018/10/18 17:48 +00:00)
- Bump FAB to 1.18.1
+12 -1
View File
@@ -23,7 +23,18 @@ assists people when migrating to a new version.
## Next Version
* [7848](https://github.com/apache/incubator-superset/pull/7848): If you are
* [8117](https://github.com/apache/incubator-superset/pull/8117): If you are
using `ENABLE_PROXY_FIX = True`, review the newly-introducted variable,
`PROXY_FIX_CONFIG`, which changes the proxy behavior in accordance with
[Werkzeug](https://werkzeug.palletsprojects.com/en/0.15.x/middleware/proxy_fix/)
* [8069](https://github.com/apache/incubator-superset/pull/8069): introduces
[MessagePack](https://github.com/msgpack/msgpack-python) and
[PyArrow](https://arrow.apache.org/docs/python/) for async query results
backend serialization. To disable set `RESULTS_BACKEND_USE_MSGPACK = False`
in your configuration.
* [7848](https://github.com/apache/incubator-superset/pull/7848): If you are
running redis with celery, celery bump to 4.3.0 requires redis-py upgrade to
3.2.0 or later.
-395
View File
@@ -1,395 +0,0 @@
Attribution 4.0 International
=======================================================================
Creative Commons Corporation ("Creative Commons") is not a law firm and
does not provide legal services or legal advice. Distribution of
Creative Commons public licenses does not create a lawyer-client or
other relationship. Creative Commons makes its licenses and related
information available on an "as-is" basis. Creative Commons gives no
warranties regarding its licenses, any material licensed under their
terms and conditions, or any related information. Creative Commons
disclaims all liability for damages resulting from their use to the
fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and
conditions that creators and other rights holders may use to share
original works of authorship and other material subject to copyright
and certain other rights specified in the public license below. The
following considerations are for informational purposes only, are not
exhaustive, and do not form part of our licenses.
Considerations for licensors: Our public licenses are
intended for use by those authorized to give the public
permission to use material in ways otherwise restricted by
copyright and certain other rights. Our licenses are
irrevocable. Licensors should read and understand the terms
and conditions of the license they choose before applying it.
Licensors should also secure all rights necessary before
applying our licenses so that the public can reuse the
material as expected. Licensors should clearly mark any
material not subject to the license. This includes other CC-
licensed material, or material used under an exception or
limitation to copyright. More considerations for licensors:
wiki.creativecommons.org/Considerations_for_licensors
Considerations for the public: By using one of our public
licenses, a licensor grants the public permission to use the
licensed material under specified terms and conditions. If
the licensor's permission is not necessary for any reason--for
example, because of any applicable exception or limitation to
copyright--then that use is not regulated by the license. Our
licenses grant only permissions under copyright and certain
other rights that a licensor has authority to grant. Use of
the licensed material may still be restricted for other
reasons, including because others have copyright or other
rights in the material. A licensor may make special requests,
such as asking that all changes be marked or described.
Although not required by our licenses, you are encouraged to
respect those requests where reasonable. More considerations
for the public:
wiki.creativecommons.org/Considerations_for_licensees
=======================================================================
Creative Commons Attribution 4.0 International Public License
By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution 4.0 International Public License ("Public License"). To the
extent this Public License may be interpreted as a contract, You are
granted the Licensed Rights in consideration of Your acceptance of
these terms and conditions, and the Licensor grants You such rights in
consideration of benefits the Licensor receives from making the
Licensed Material available under these terms and conditions.
Section 1 -- Definitions.
a. Adapted Material means material subject to Copyright and Similar
Rights that is derived from or based upon the Licensed Material
and in which the Licensed Material is translated, altered,
arranged, transformed, or otherwise modified in a manner requiring
permission under the Copyright and Similar Rights held by the
Licensor. For purposes of this Public License, where the Licensed
Material is a musical work, performance, or sound recording,
Adapted Material is always produced where the Licensed Material is
synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright
and Similar Rights in Your contributions to Adapted Material in
accordance with the terms and conditions of this Public License.
c. Copyright and Similar Rights means copyright and/or similar rights
closely related to copyright including, without limitation,
performance, broadcast, sound recording, and Sui Generis Database
Rights, without regard to how the rights are labeled or
categorized. For purposes of this Public License, the rights
specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
d. Effective Technological Measures means those measures that, in the
absence of proper authority, may not be circumvented under laws
fulfilling obligations under Article 11 of the WIPO Copyright
Treaty adopted on December 20, 1996, and/or similar international
agreements.
e. Exceptions and Limitations means fair use, fair dealing, and/or
any other exception or limitation to Copyright and Similar Rights
that applies to Your use of the Licensed Material.
f. Licensed Material means the artistic or literary work, database,
or other material to which the Licensor applied this Public
License.
g. Licensed Rights means the rights granted to You subject to the
terms and conditions of this Public License, which are limited to
all Copyright and Similar Rights that apply to Your use of the
Licensed Material and that the Licensor has authority to license.
h. Licensor means the individual(s) or entity(ies) granting rights
under this Public License.
i. Share means to provide material to the public by any means or
process that requires permission under the Licensed Rights, such
as reproduction, public display, public performance, distribution,
dissemination, communication, or importation, and to make material
available to the public including in ways that members of the
public may access the material from a place and at a time
individually chosen by them.
j. Sui Generis Database Rights means rights other than copyright
resulting from Directive 96/9/EC of the European Parliament and of
the Council of 11 March 1996 on the legal protection of databases,
as amended and/or succeeded, as well as other essentially
equivalent rights anywhere in the world.
k. You means the individual or entity exercising the Licensed Rights
under this Public License. Your has a corresponding meaning.
Section 2 -- Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License,
the Licensor hereby grants You a worldwide, royalty-free,
non-sublicensable, non-exclusive, irrevocable license to
exercise the Licensed Rights in the Licensed Material to:
a. reproduce and Share the Licensed Material, in whole or
in part; and
b. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where
Exceptions and Limitations apply to Your use, this Public
License does not apply, and You do not need to comply with
its terms and conditions.
3. Term. The term of this Public License is specified in Section
6(a).
4. Media and formats; technical modifications allowed. The
Licensor authorizes You to exercise the Licensed Rights in
all media and formats whether now known or hereafter created,
and to make technical modifications necessary to do so. The
Licensor waives and/or agrees not to assert any right or
authority to forbid You from making technical modifications
necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective
Technological Measures. For purposes of this Public License,
simply making modifications authorized by this Section 2(a)
(4) never produces Adapted Material.
5. Downstream recipients.
a. Offer from the Licensor -- Licensed Material. Every
recipient of the Licensed Material automatically
receives an offer from the Licensor to exercise the
Licensed Rights under the terms and conditions of this
Public License.
b. No downstream restrictions. You may not offer or impose
any additional or different terms or conditions on, or
apply any Effective Technological Measures to, the
Licensed Material if doing so restricts exercise of the
Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or
may be construed as permission to assert or imply that You
are, or that Your use of the Licensed Material is, connected
with, or sponsored, endorsed, or granted official status by,
the Licensor or others designated to receive attribution as
provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not
licensed under this Public License, nor are publicity,
privacy, and/or other similar personality rights; however, to
the extent possible, the Licensor waives and/or agrees not to
assert any such rights held by the Licensor to the limited
extent necessary to allow You to exercise the Licensed
Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this
Public License.
3. To the extent possible, the Licensor waives any right to
collect royalties from You for the exercise of the Licensed
Rights, whether directly or through a collecting society
under any voluntary or waivable statutory or compulsory
licensing scheme. In all other cases the Licensor expressly
reserves any right to collect such royalties.
Section 3 -- License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the
following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified
form), You must:
a. retain the following if it is supplied by the Licensor
with the Licensed Material:
i. identification of the creator(s) of the Licensed
Material and any others designated to receive
attribution, in any reasonable manner requested by
the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of
warranties;
v. a URI or hyperlink to the Licensed Material to the
extent reasonably practicable;
b. indicate if You modified the Licensed Material and
retain an indication of any previous modifications; and
c. indicate the Licensed Material is licensed under this
Public License, and include the text of, or the URI or
hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any
reasonable manner based on the medium, means, and context in
which You Share the Licensed Material. For example, it may be
reasonable to satisfy the conditions by providing a URI or
hyperlink to a resource that includes the required
information.
3. If requested by the Licensor, You must remove any of the
information required by Section 3(a)(1)(A) to the extent
reasonably practicable.
4. If You Share Adapted Material You produce, the Adapter's
License You apply must not prevent recipients of the Adapted
Material from complying with this Public License.
Section 4 -- Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
to extract, reuse, reproduce, and Share all or a substantial
portion of the contents of the database;
b. if You include all or a substantial portion of the database
contents in a database in which You have Sui Generis Database
Rights, then the database in which You have Sui Generis Database
Rights (but not its individual contents) is Adapted Material; and
c. You must comply with the conditions in Section 3(a) if You Share
all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
c. The disclaimer of warranties and limitation of liability provided
above shall be interpreted in a manner that, to the extent
possible, most closely approximates an absolute disclaimer and
waiver of all liability.
Section 6 -- Term and Termination.
a. This Public License applies for the term of the Copyright and
Similar Rights licensed here. However, if You fail to comply with
this Public License, then Your rights under this Public License
terminate automatically.
b. Where Your right to use the Licensed Material has terminated under
Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided
it is cured within 30 days of Your discovery of the
violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any
right the Licensor may have to seek remedies for Your violations
of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the
Licensed Material under separate terms or conditions or stop
distributing the Licensed Material at any time; however, doing so
will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
License.
Section 7 -- Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different
terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the
Licensed Material not stated herein are separate from and
independent of the terms and conditions of this Public License.
Section 8 -- Interpretation.
a. For the avoidance of doubt, this Public License does not, and
shall not be interpreted to, reduce, limit, restrict, or impose
conditions on any use of the Licensed Material that could lawfully
be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is
deemed unenforceable, it shall be automatically reformed to the
minimum extent necessary to make it enforceable. If the provision
cannot be reformed, it shall be severed from this Public License
without affecting the enforceability of the remaining terms and
conditions.
c. No term or condition of this Public License will be waived and no
failure to comply consented to unless expressly agreed to by the
Licensor.
d. Nothing in this Public License constitutes or may be interpreted
as a limitation upon, or waiver of, any privileges and immunities
that apply to the Licensor or You, including from the legal
processes of any jurisdiction or authority.
=======================================================================
Creative Commons is not a party to its public
licenses. Notwithstanding, Creative Commons may elect to apply one of
its public licenses to material it publishes and in those instances
will be considered the “Licensor.” The text of the Creative Commons
public licenses is dedicated to the public domain under the CC0 Public
Domain Dedication. Except for the limited purpose of indicating that
material is shared under a Creative Commons public license or as
otherwise permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the
public licenses.
Creative Commons may be contacted at creativecommons.org.
+1 -1
View File
@@ -21,7 +21,7 @@ croniter==0.3.30
cryptography==2.7
decorator==4.4.0 # via retry
defusedxml==0.6.0 # via python3-openid
flask-appbuilder==2.1.9
flask-appbuilder==2.1.13
flask-babel==0.12.2 # via flask-appbuilder
flask-caching==1.7.2
flask-compress==1.4.0
+2 -2
View File
@@ -72,8 +72,8 @@ setup(
"contextlib2",
"croniter>=0.3.28",
"cryptography>=2.4.2",
"flask>=1.0.0, <2.0.0",
"flask-appbuilder>=2.1.9, <2.3.0",
"flask>=1.1.0, <2.0.0",
"flask-appbuilder>=2.1.13, <2.3.0",
"flask-caching",
"flask-compress",
"flask-talisman",
+3 -2
View File
@@ -29,7 +29,6 @@ from flask_compress import Compress
from flask_migrate import Migrate
from flask_talisman import Talisman
from flask_wtf.csrf import CSRFProtect
from werkzeug.contrib.fixers import ProxyFix
import wtforms_json
from superset import config
@@ -160,7 +159,9 @@ if app.config.get("ENABLE_CORS"):
CORS(app, **app.config.get("CORS_OPTIONS"))
if app.config.get("ENABLE_PROXY_FIX"):
app.wsgi_app = ProxyFix(app.wsgi_app)
from werkzeug.middleware.proxy_fix import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app, **app.config.get("PROXY_FIX_CONFIG"))
if app.config.get("ENABLE_CHUNK_ENCODING"):
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "superset",
"version": "0.999.0dev",
"version": "0.34.1",
"description": "Superset is a data exploration platform designed to be visual, intuitive, and interactive.",
"license": "Apache-2.0",
"directories": {
@@ -26,6 +26,7 @@ describe('FilterableTable', () => {
data: [
{ a: 'a1', b: 'b1', c: 'c1', d: 0 },
{ a: 'a2', b: 'b2', c: 'c2', d: 100 },
{ a: null, b: 'b3', c: 'c3', d: 50 },
],
height: 500,
};
@@ -38,7 +39,7 @@ describe('FilterableTable', () => {
});
it('renders a grid with 2 Table rows', () => {
expect(wrapper.find('.ReactVirtualized__Grid')).toHaveLength(1);
expect(wrapper.find('.ReactVirtualized__Table__row')).toHaveLength(2);
expect(wrapper.find('.ReactVirtualized__Table__row')).toHaveLength(3);
});
it('renders a grid with 2 Grid rows for wide tables', () => {
const wideTableColumns = MAX_COLUMNS_FOR_TABLE + 1;
@@ -71,9 +71,9 @@ describe('HeaderActionsDropdown', () => {
expect(wrapper.find(MenuItem)).toHaveLength(1);
});
it('should not render the RefreshIntervalModal', () => {
it('should render the RefreshIntervalModal', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(RefreshIntervalModal)).toHaveLength(0);
expect(wrapper.find(RefreshIntervalModal)).toHaveLength(1);
});
it('should render the URLShortLinkModal', () => {
@@ -105,9 +105,9 @@ describe('HeaderActionsDropdown', () => {
expect(wrapper.find(MenuItem)).toHaveLength(2);
});
it('should not render the RefreshIntervalModal', () => {
it('should render the RefreshIntervalModal', () => {
const wrapper = setup(overrideProps);
expect(wrapper.find(RefreshIntervalModal)).toHaveLength(0);
expect(wrapper.find(RefreshIntervalModal)).toHaveLength(1);
});
it('should render the URLShortLinkModal', () => {
@@ -25,6 +25,8 @@ describe('RefreshIntervalModal', () => {
const mockedProps = {
triggerNode: <i className="fa fa-edit" />,
refreshFrequency: 10,
onChange: jest.fn(),
editMode: true,
};
it('is valid', () => {
expect(
@@ -39,4 +41,10 @@ describe('RefreshIntervalModal', () => {
const wrapper = mount(<RefreshIntervalModal {...mockedProps} />);
expect(wrapper.prop('refreshFrequency')).toEqual(10);
});
it('should change refreshFrequency with edit mode', () => {
const wrapper = mount(<RefreshIntervalModal {...mockedProps} />);
wrapper.instance().handleFrequencyChange({ value: 30 });
expect(mockedProps.onChange).toHaveBeenCalled();
expect(mockedProps.onChange).toHaveBeenCalledWith(30, mockedProps.editMode);
});
});
@@ -368,5 +368,12 @@ describe('MetricsControl', () => {
wrapper.setProps({ ...props, columns: [] });
expect(onChange.calledOnce).toEqual(false);
});
it('Does not fail if no columns or savedMetrics are passed', () => {
const { wrapper } = setup({
savedMetrics: null,
columns: null,
});
expect(wrapper.exists('.metrics-select')).toEqual(true);
});
});
});
-1
View File
@@ -58,7 +58,6 @@ const sqlLabPersistStateConfig = {
...state[path],
queries: emptyQueryResults(state[path].queries),
queryEditors: clearQueryEditors(state[path].queryEditors),
tables: [],
};
}
});
+2 -2
View File
@@ -455,8 +455,8 @@ export function setUserOffline(offline) {
return { type: SET_USER_OFFLINE, offline };
}
export function persistEditorHeight(queryEditor, currentHeight) {
return { type: QUERY_EDITOR_PERSIST_HEIGHT, queryEditor, currentHeight };
export function persistEditorHeight(queryEditor, northPercent, southPercent) {
return { type: QUERY_EDITOR_PERSIST_HEIGHT, queryEditor, northPercent, southPercent };
}
export function popStoredQuery(urlId) {
@@ -87,8 +87,8 @@ class SqlEditor extends React.PureComponent {
this.state = {
autorun: props.queryEditor.autorun,
ctas: '',
northPercent: INITIAL_NORTH_PERCENT,
southPercent: INITIAL_SOUTH_PERCENT,
northPercent: props.queryEditor.northPercent || INITIAL_NORTH_PERCENT,
southPercent: props.queryEditor.southPercent || INITIAL_SOUTH_PERCENT,
sql: props.queryEditor.sql,
};
this.sqlEditorRef = React.createRef();
@@ -143,7 +143,7 @@ class SqlEditor extends React.PureComponent {
if (this.northPaneRef.current && this.northPaneRef.current.clientHeight) {
this.props.actions.persistEditorHeight(this.props.queryEditor,
this.northPaneRef.current.clientHeight);
northPercent, southPercent);
}
}
onSqlChanged(sql) {
@@ -311,7 +311,8 @@ export default function sqlLabReducer(state = {}, action) {
},
[actions.QUERY_EDITOR_PERSIST_HEIGHT]() {
return alterInArr(state, 'queryEditors', action.queryEditor, {
height: action.currentHeight,
northPercent: action.northPercent,
southPercent: action.southPercent,
});
},
[actions.SET_DATABASES]() {
@@ -21,10 +21,14 @@ import { LOCALSTORAGE_MAX_QUERY_AGE_MS } from '../constants';
const PERSISTENT_QUERY_EDITOR_KEYS = new Set([
'autorun',
'dbId',
'height',
'id',
'latestQueryId',
'northPercent',
'queryLimit',
'schema',
'selectedText',
'southPercent',
'sql',
'templateParams',
'title',
@@ -191,6 +191,7 @@ class ChartRenderer extends React.Component {
<React.Fragment>
{this.renderTooltip()}
<SuperChart
disableErrorBoundary
id={`chart-id-${chartId}`}
className={`${snakeCase(vizType)}`}
chartType={vizType}
@@ -209,7 +209,7 @@ export default class FilterableTable extends PureComponent {
const cellValue = row[key];
if (typeof cellValue === 'string') {
values.push(cellValue.toLowerCase());
} else if (typeof cellValue.toString === 'function') {
} else if (cellValue !== null && typeof cellValue.toString === 'function') {
values.push(cellValue.toString());
}
}
@@ -64,7 +64,7 @@ export const FETCH_FAVE_STAR = 'FETCH_FAVE_STAR';
export function fetchFaveStar(id) {
return function fetchFaveStarThunk(dispatch) {
return SupersetClient.get({
endpoint: `${FAVESTAR_BASE_URL}/${id}/count`,
endpoint: `${FAVESTAR_BASE_URL}/${id}/count/`,
})
.then(({ json }) => {
if (json.count > 0) dispatch(toggleFaveStar(true));
@@ -151,8 +151,8 @@ export function onSave() {
}
export const SET_REFRESH_FREQUENCY = 'SET_REFRESH_FREQUENCY';
export function setRefreshFrequency(refreshFrequency) {
return { type: SET_REFRESH_FREQUENCY, refreshFrequency };
export function setRefreshFrequency(refreshFrequency, isPersistent = false) {
return { type: SET_REFRESH_FREQUENCY, refreshFrequency, isPersistent };
}
export function saveDashboardRequestSuccess() {
@@ -103,8 +103,8 @@ class HeaderActionsDropdown extends React.PureComponent {
this.props.updateCss(css);
}
changeRefreshInterval(refreshInterval) {
this.props.setRefreshFrequency(refreshInterval);
changeRefreshInterval(refreshInterval, isPersistent) {
this.props.setRefreshFrequency(refreshInterval, isPersistent);
this.props.startPeriodicRender(refreshInterval * 1000);
}
@@ -177,13 +177,20 @@ class HeaderActionsDropdown extends React.PureComponent {
<MenuItem onClick={forceRefreshAllCharts} disabled={isLoading}>
{t('Force refresh dashboard')}
</MenuItem>
{editMode && (
<RefreshIntervalModal
refreshFrequency={refreshFrequency}
onChange={this.changeRefreshInterval}
triggerNode={<span>{t('Set auto-refresh interval')}</span>}
/>
)}
<RefreshIntervalModal
refreshFrequency={refreshFrequency}
onChange={this.changeRefreshInterval}
editMode={editMode}
triggerNode={
<span>
{editMode
? t('Set auto-refresh interval')
: t('Auto-refresh dashboard')}
</span>
}
/>
{editMode && (
<MenuItem target="_blank" href={`/dashboard/edit/${dashboardId}`}>
{t('Edit dashboard metadata')}
@@ -27,6 +27,7 @@ const propTypes = {
triggerNode: PropTypes.node.isRequired,
refreshFrequency: PropTypes.number.isRequired,
onChange: PropTypes.func.isRequired,
editMode: PropTypes.bool.isRequired,
};
const options = [
@@ -48,7 +49,17 @@ class RefreshIntervalModal extends React.PureComponent {
this.state = {
refreshFrequency: props.refreshFrequency,
};
this.handleFrequencyChange = this.handleFrequencyChange.bind(this);
}
handleFrequencyChange(opt) {
const value = opt ? opt.value : options[0].value;
this.setState({
refreshFrequency: value,
});
this.props.onChange(value, this.props.editMode);
}
render() {
return (
<ModalTrigger
@@ -61,13 +72,7 @@ class RefreshIntervalModal extends React.PureComponent {
<Select
options={options}
value={this.state.refreshFrequency}
onChange={opt => {
const value = opt ? opt.value : options[0].value;
this.setState({
refreshFrequency: value,
});
this.props.onChange(value);
}}
onChange={this.handleFrequencyChange}
/>
</div>
}
@@ -169,7 +169,7 @@ export default function dashboardStateReducer(state = {}, action) {
return {
...state,
refreshFrequency: action.refreshFrequency,
hasUnsavedChanges: true,
hasUnsavedChanges: action.isPersistent,
};
},
};
@@ -261,10 +261,11 @@ export class DatasourceEditor extends React.PureComponent {
}
syncMetadata() {
const { datasource } = this.state;
// Handle carefully when the schema is empty
const endpoint = (
`/datasource/external_metadata/${datasource.type}/${datasource.id}/` +
`?db_id=${datasource.database.id}` +
`&schema=${datasource.schema}` +
`&schema=${datasource.schema || ''}` +
`&table_name=${datasource.datasource_name}`
);
this.setState({ metadataLoading: true });
@@ -131,8 +131,6 @@ class ExploreViewContainer extends React.Component {
/* eslint no-unused-vars: 0 */
componentDidUpdate(prevProps, prevState) {
this.triggerQueryIfNeeded();
const changedControlKeys = this.findChangedControlKeys(prevProps.controls, this.props.controls);
if (this.hasDisplayControlChanged(changedControlKeys, this.props.controls)) {
this.addHistory({});
@@ -213,17 +211,6 @@ class ExploreViewContainer extends React.Component {
);
}
triggerQueryIfNeeded() {
if (this.props.chart.triggerQuery && !this.hasErrors()) {
this.props.actions.postChartFormData(
this.props.form_data,
false,
this.props.timeout,
this.props.chart.id,
);
}
}
addHistory({ isReplace = false, title }) {
const { payload } = getExploreUrlAndPayload({ formData: this.props.form_data });
const longUrl = getExploreLongUrl(this.props.form_data, null, false);
@@ -54,6 +54,8 @@ const propTypes = {
const defaultProps = {
onChange: () => {},
clearable: true,
savedMetrics: [],
columns: [],
};
function isDictionaryForAdhocMetric(value) {
@@ -62,7 +64,7 @@ function isDictionaryForAdhocMetric(value) {
function columnsContainAllMetrics(value, nextProps) {
const columnNames = new Set(
[...nextProps.columns, ...nextProps.savedMetrics]
[...(nextProps.columns || []), ...(nextProps.savedMetrics || [])]
// eslint-disable-next-line camelcase
.map(({ column_name, metric_name }) => (column_name || metric_name)),
);
@@ -243,7 +245,7 @@ export default class MetricsControl extends React.PureComponent {
Object.keys(AGGREGATES).map(aggregate => ({ aggregate_name: aggregate })) :
[];
const options = [
...columns,
...(columns || []),
...aggregates,
...(savedMetrics || []),
];
@@ -44,6 +44,7 @@ export default {
['color_picker', 'target_color_picker'],
['dimension', 'color_scheme', 'label_colors'],
['stroke_width', 'legend_position'],
['legend_format', null],
],
},
{
@@ -52,7 +52,7 @@ export default {
['linear_color_scheme', 'opacity'],
['num_buckets', 'break_points'],
['table_filter', 'toggle_polygons'],
['legend_position', null],
['legend_position', 'legend_format'],
],
},
{
@@ -62,6 +62,7 @@ export default {
label: t('Point Color'),
controlSetRows: [
['color_picker', 'legend_position'],
[null, 'legend_format'],
['dimension', 'color_scheme', 'label_colors'],
],
},
@@ -31,7 +31,7 @@ export default {
controlOverrides: {
code: {
default: '####Section Title\n' +
'A paragraph describing the section' +
'A paragraph describing the section ' +
'of the dashboard, right before the separator line ' +
'\n\n' +
'---------------',
+11 -1
View File
@@ -305,6 +305,16 @@ export const controls = {
renderTrigger: true,
},
legend_format: {
label: t('Legend Format'),
description: t('Choose the format for legend values'),
type: 'SelectControl',
clearable: false,
default: D3_FORMAT_OPTIONS[0],
choices: D3_FORMAT_OPTIONS,
renderTrigger: true,
},
fill_color_picker: {
label: t('Fill Color'),
description: t(' Set the opacity to 0 if you do not want to override the color specified in the GeoJSON'),
@@ -1470,7 +1480,7 @@ export const controls = {
renderTrigger: true,
default: true,
description: (
'Whether to apply filters as they change, or wait for' +
'Whether to apply filters as they change, or wait for ' +
'users to hit an [Apply] button'
),
},
File diff suppressed because it is too large Load Diff
+29 -1
View File
@@ -18,13 +18,17 @@
*/
import React from 'react';
import PropTypes from 'prop-types';
import { formatNumber } from '@superset-ui/number-format';
import './Legend.css';
const categoryDelimiter = ' - ';
const propTypes = {
categories: PropTypes.object,
toggleCategory: PropTypes.func,
showSingleCategory: PropTypes.func,
format: PropTypes.string,
position: PropTypes.oneOf([null, 'tl', 'tr', 'bl', 'br']),
};
@@ -32,10 +36,34 @@ const defaultProps = {
categories: {},
toggleCategory: () => {},
showSingleCategory: () => {},
format: null,
position: 'tr',
};
export default class Legend extends React.PureComponent {
format(value) {
if (!this.props.format) {
return value;
}
const numValue = parseFloat(value);
return formatNumber(this.props.format, numValue);
}
formatCategoryLabel(k) {
if (!this.props.format) {
return k;
}
if (k.includes(categoryDelimiter)) {
const values = k.split(categoryDelimiter);
return this.format(values[0]) + categoryDelimiter + this.format(values[1]);
}
return this.format(k);
}
render() {
if (Object.keys(this.props.categories).length === 0 || this.props.position === null) {
return null;
@@ -51,7 +79,7 @@ export default class Legend extends React.PureComponent {
onClick={() => this.props.toggleCategory(k)}
onDoubleClick={() => this.props.showSingleCategory(k)}
>
<span style={style}>{icon}</span> {k}
<span style={style}>{icon}</span> {this.formatCategoryLabel(k)}
</a>
</li>
);
@@ -237,6 +237,7 @@ export default class CategoricalDeckGLContainer extends React.PureComponent {
toggleCategory={this.toggleCategory}
showSingleCategory={this.showSingleCategory}
position={this.props.formData.legend_position}
format={this.props.formData.legend_format}
/>
</AnimatableDeckGLContainer>
</div>
@@ -274,6 +274,7 @@ class DeckGLPolygon extends React.Component {
<Legend
categories={buckets}
position={formData.legend_position}
format={formData.legend_format}
/>}
</AnimatableDeckGLContainer>
</div>
+3 -1
View File
@@ -109,8 +109,10 @@ FLASK_USE_RELOAD = True
# and it's more secure to turn it off in production settings.
SHOW_STACKTRACE = True
# Extract and use X-Forwarded-For/X-Forwarded-Proto headers?
# Use all X-Forwarded headers when ENABLE_PROXY_FIX is True.
# When proxying to a different port, set "x_port" to 0 to avoid downstream issues.
ENABLE_PROXY_FIX = False
PROXY_FIX_CONFIG = {"x_for": 1, "x_proto": 1, "x_host": 1, "x_port": 1, "x_prefix": 1}
# ------------------------------
# GLOBALS FOR APP Builder
+3
View File
@@ -1180,6 +1180,9 @@ class DruidDatasource(Model, BaseDatasource):
intervals=self.intervals_from_dttms(from_dttm, to_dttm),
)
if is_timeseries:
qry["context"] = dict(skipEmptyBuckets=True)
filters = DruidDatasource.get_filters(filter, self.num_cols, columns_dict)
if filters:
qry["filter"] = filters
+35 -5
View File
@@ -18,7 +18,8 @@
from collections import OrderedDict
from datetime import datetime
import logging
from typing import Any, List, NamedTuple, Optional, Union
import re
from typing import Any, Dict, List, NamedTuple, Optional, Union
from flask import escape, Markup
from flask_appbuilder import Model
@@ -477,7 +478,7 @@ class SqlaTable(Model, BaseDatasource):
# show_cols and latest_partition set to false to avoid
# the expensive cost of inspecting the DB
return self.database.select_star(
self.name, show_cols=False, latest_partition=False
self.table_name, schema=self.schema, show_cols=False, latest_partition=False
)
def get_col(self, col_name):
@@ -793,6 +794,8 @@ class SqlaTable(Model, BaseDatasource):
direction = asc if ascending else desc
if utils.is_adhoc_metric(col):
col = self.adhoc_metric_to_sqla(col, cols)
elif col in cols:
col = cols[col].get_sqla_col()
qry = qry.order_by(direction(col))
if row_limit:
@@ -1064,9 +1067,36 @@ class SqlaTable(Model, BaseDatasource):
def default_query(qry):
return qry.filter_by(is_sqllab_view=False)
def get_extra_cache_keys(self, query_obj) -> List[Any]:
sqla_query = self.get_sqla_query(**query_obj)
return sqla_query.extra_cache_keys
def has_extra_cache_keys(self, query_obj: Dict) -> bool:
"""
Detects the presence of calls to cache_key_wrapper in items in query_obj that can
be templated.
:param query_obj: query object to analyze
:return: True if at least one item calls cache_key_wrapper, otherwise False
"""
regex = re.compile(r"\{\{.*cache_key_wrapper\(.*\).*\}\}")
templatable_statements: List[str] = []
if self.sql:
templatable_statements.append(self.sql)
if self.fetch_values_predicate:
templatable_statements.append(self.fetch_values_predicate)
extras = query_obj.get("extras", {})
if "where" in extras:
templatable_statements.append(extras["where"])
if "having" in extras:
templatable_statements.append(extras["having"])
for statement in templatable_statements:
if regex.search(statement):
return True
return False
def get_extra_cache_keys(self, query_obj: Dict) -> List[Any]:
if self.has_extra_cache_keys(query_obj):
sqla_query = self.get_sqla_query(**query_obj)
extra_cache_keys = sqla_query.extra_cache_keys
return extra_cache_keys
return []
sa.event.listen(SqlaTable, "after_insert", security_manager.set_perm)
+1 -1
View File
@@ -21,7 +21,7 @@ from superset.db_engine_specs.base import BaseEngineSpec
class AthenaEngineSpec(BaseEngineSpec):
engine = "awsathena"
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1S": "date_trunc('second', CAST({col} AS TIMESTAMP))",
"PT1M": "date_trunc('minute', CAST({col} AS TIMESTAMP))",
+36 -21
View File
@@ -37,7 +37,7 @@ from werkzeug.utils import secure_filename
from superset import app, db, sql_parse
from superset.utils import core as utils
Grain = namedtuple("Grain", "name label function duration")
TimeGrain = namedtuple("Grain", "name label function duration")
config = app.config
@@ -99,21 +99,11 @@ class LimitMethod(object):
FORCE_LIMIT = "force_limit"
def create_time_grains_tuple(time_grains, time_grain_functions, blacklist):
ret_list = []
blacklist = blacklist if blacklist else []
for duration, func in time_grain_functions.items():
if duration not in blacklist:
name = time_grains.get(duration)
ret_list.append(Grain(name, _(name), func, duration))
return tuple(ret_list)
class BaseEngineSpec(object):
class BaseEngineSpec:
"""Abstract class for database engine specific configurations"""
engine = "base" # str as defined in sqlalchemy.engine.engine
time_grain_functions: Dict[Optional[str], str] = {}
_time_grain_functions: Dict[Optional[str], str] = {}
time_groupby_inline = False
limit_method = LimitMethod.FORCE_LIMIT
time_secondary_columns = False
@@ -138,7 +128,7 @@ class BaseEngineSpec(object):
:return: TimestampExpression object
"""
if time_grain:
time_expr = cls.time_grain_functions.get(time_grain)
time_expr = cls.get_time_grain_functions().get(time_grain)
if not time_expr:
raise NotImplementedError(
f"No grain spec for {time_grain} for database {cls.engine}"
@@ -155,14 +145,39 @@ class BaseEngineSpec(object):
return TimestampExpression(time_expr, col, type_=DateTime)
@classmethod
def get_time_grains(cls):
blacklist = config.get("TIME_GRAIN_BLACKLIST", [])
grains = builtin_time_grains.copy()
grains.update(config.get("TIME_GRAIN_ADDONS", {}))
grain_functions = cls.time_grain_functions.copy()
def get_time_grains(cls) -> Tuple[TimeGrain, ...]:
"""
Generate a tuple of supported time grains.
:return: All time grains supported by the engine
"""
ret_list = []
time_grain_functions = cls.get_time_grain_functions()
time_grains = builtin_time_grains.copy()
time_grains.update(config.get("TIME_GRAIN_ADDONS", {}))
for duration, func in time_grain_functions.items():
if duration in time_grains:
name = time_grains[duration]
ret_list.append(TimeGrain(name, _(name), func, duration))
return tuple(ret_list)
@classmethod
def get_time_grain_functions(cls) -> Dict[Optional[str], str]:
"""
Return a dict of all supported time grains including any potential added grains
but excluding any potentially blacklisted grains in the config file.
:return: All time grain functions supported by the engine
"""
# TODO: use @memoize decorator or similar to avoid recomputation on every call
time_grain_functions = cls._time_grain_functions.copy()
grain_addon_functions = config.get("TIME_GRAIN_ADDON_FUNCTIONS", {})
grain_functions.update(grain_addon_functions.get(cls.engine, {}))
return create_time_grains_tuple(grains, grain_functions, blacklist)
time_grain_functions.update(grain_addon_functions.get(cls.engine, {}))
blacklist: List[str] = config.get("TIME_GRAIN_BLACKLIST", [])
for key in blacklist:
time_grain_functions.pop(key)
return time_grain_functions
@classmethod
def make_select_compatible(cls, groupby_exprs, select_exprs):
+1 -1
View File
@@ -43,7 +43,7 @@ class BigQueryEngineSpec(BaseEngineSpec):
"""
arraysize = 5000
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1S": "TIMESTAMP_TRUNC({col}, SECOND)",
"PT1M": "TIMESTAMP_TRUNC({col}, MINUTE)",
+1 -1
View File
@@ -26,7 +26,7 @@ class ClickHouseEngineSpec(BaseEngineSpec):
time_secondary_columns = True
time_groupby_inline = True
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1M": "toStartOfMinute(toDateTime({col}))",
"PT5M": "toDateTime(intDiv(toUInt32(toDateTime({col})), 300)*300)",
+1 -1
View File
@@ -24,7 +24,7 @@ class Db2EngineSpec(BaseEngineSpec):
force_column_alias_quotes = True
max_column_name_length = 30
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1S": "CAST({col} as TIMESTAMP)" " - MICROSECOND({col}) MICROSECONDS",
"PT1M": "CAST({col} as TIMESTAMP)"
+1 -1
View File
@@ -25,7 +25,7 @@ class DrillEngineSpec(BaseEngineSpec):
engine = "drill"
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1S": "NEARESTDATE({col}, 'SECOND')",
"PT1M": "NEARESTDATE({col}, 'MINUTE')",
+1 -1
View File
@@ -25,7 +25,7 @@ class DruidEngineSpec(BaseEngineSpec):
allows_joins = False
allows_subqueries = True
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1S": "FLOOR({col} TO SECOND)",
"PT1M": "FLOOR({col} TO MINUTE)",
+1 -1
View File
@@ -23,7 +23,7 @@ class ImpalaEngineSpec(BaseEngineSpec):
engine = "impala"
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1M": "TRUNC({col}, 'MI')",
"PT1H": "TRUNC({col}, 'HH')",
+1 -1
View File
@@ -23,7 +23,7 @@ class KylinEngineSpec(BaseEngineSpec):
engine = "kylin"
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1S": "CAST(FLOOR(CAST({col} AS TIMESTAMP) TO SECOND) AS TIMESTAMP)",
"PT1M": "CAST(FLOOR(CAST({col} AS TIMESTAMP) TO MINUTE) AS TIMESTAMP)",
+1 -1
View File
@@ -28,7 +28,7 @@ class MssqlEngineSpec(BaseEngineSpec):
limit_method = LimitMethod.WRAP_SQL
max_column_name_length = 128
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1S": "DATEADD(second, DATEDIFF(second, '2000-01-01', {col}), '2000-01-01')",
"PT1M": "DATEADD(minute, DATEDIFF(minute, 0, {col}), 0)",
+1 -1
View File
@@ -25,7 +25,7 @@ class MySQLEngineSpec(BaseEngineSpec):
engine = "mysql"
max_column_name_length = 64
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1S": "DATE_ADD(DATE({col}), "
"INTERVAL (HOUR({col})*60*60 + MINUTE({col})*60"
+1 -1
View File
@@ -25,7 +25,7 @@ class OracleEngineSpec(PostgresBaseEngineSpec):
force_column_alias_quotes = True
max_column_name_length = 30
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1S": "CAST({col} as DATE)",
"PT1M": "TRUNC(CAST({col} as DATE), 'MI')",
+2 -2
View File
@@ -29,7 +29,7 @@ class PinotEngineSpec(BaseEngineSpec):
allows_column_aliases = False
# Pinot does its own conversion below
time_grain_functions: Dict[Optional[str], str] = {
_time_grain_functions: Dict[Optional[str], str] = {
"PT1S": "1:SECONDS",
"PT1M": "1:MINUTES",
"PT1H": "1:HOURS",
@@ -52,7 +52,7 @@ class PinotEngineSpec(BaseEngineSpec):
# We are not really converting any time units, just bucketing them.
seconds_or_ms = "MILLISECONDS" if pdf == "epoch_ms" else "SECONDS"
tf = f"1:{seconds_or_ms}:EPOCH"
granularity = cls.time_grain_functions.get(time_grain)
granularity = cls.get_time_grain_functions().get(time_grain)
if not granularity:
raise NotImplementedError("No pinot grain spec for " + str(time_grain))
# In pinot the output is a string since there is no timestamp column like pg
+1 -1
View File
@@ -23,7 +23,7 @@ class PostgresBaseEngineSpec(BaseEngineSpec):
engine = ""
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1S": "DATE_TRUNC('second', {col})",
"PT1M": "DATE_TRUNC('minute', {col})",
+1 -1
View File
@@ -41,7 +41,7 @@ QueryStatus = utils.QueryStatus
class PrestoEngineSpec(BaseEngineSpec):
engine = "presto"
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1S": "date_trunc('second', CAST({col} AS TIMESTAMP))",
"PT1M": "date_trunc('minute', CAST({col} AS TIMESTAMP))",
+1 -1
View File
@@ -25,7 +25,7 @@ class SnowflakeEngineSpec(PostgresBaseEngineSpec):
force_column_alias_quotes = True
max_column_name_length = 256
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1S": "DATE_TRUNC('SECOND', {col})",
"PT1M": "DATE_TRUNC('MINUTE', {col})",
+1 -1
View File
@@ -24,7 +24,7 @@ from superset.utils import core as utils
class SqliteEngineSpec(BaseEngineSpec):
engine = "sqlite"
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1S": "DATETIME(STRFTIME('%Y-%m-%dT%H:%M:%S', {col}))",
"PT1M": "DATETIME(STRFTIME('%Y-%m-%dT%H:%M:00', {col}))",
+1 -1
View File
@@ -25,7 +25,7 @@ class TeradataEngineSpec(BaseEngineSpec):
limit_method = LimitMethod.WRAP_SQL
max_column_name_length = 30 # since 14.10 this is 128
time_grain_functions = {
_time_grain_functions = {
None: "{col}",
"PT1M": "TRUNC(CAST({col} as DATE), 'MI')",
"PT1H": "TRUNC(CAST({col} as DATE), 'HH')",
+41 -9
View File
@@ -335,8 +335,30 @@ def load_deck_dash():
"time_grain_sqla": None,
"time_range": " : ",
"line_column": "contour",
"metric": None,
"metric": {
"aggregate": "SUM",
"column": {
"column_name": "population",
"description": None,
"expression": None,
"filterable": True,
"groupby": True,
"id": 1332,
"is_dttm": False,
"optionName": "_col_population",
"python_date_format": None,
"type": "BIGINT",
"verbose_name": None,
},
"expressionType": "SIMPLE",
"fromFormData": True,
"hasCustomLabel": True,
"label": "Population",
"optionName": "metric_t2v4qbfiz1_w6qgpx4h2p",
"sqlExpression": None,
},
"line_type": "json",
"linear_color_scheme": "oranges",
"mapbox_style": "mapbox://styles/mapbox/light-v9",
"viewport": {
"longitude": -122.43388541747726,
@@ -360,16 +382,26 @@ def load_deck_dash():
"filled": True,
"stroked": False,
"extruded": True,
"point_radius_scale": 100,
"point_radius_fixed": {"type": "metric", "value": "count"},
"multiplier": 1,
"js_columns": ["population", "area"],
"js_data_mutator": "data => data.map(d => ({\n"
" ...d,\n"
" elevation: d.extraProps.population/d.extraProps.area/10,\n"
"}));",
"multiplier": 0.1,
"point_radius_fixed": {
"type": "metric",
"value": {
"aggregate": None,
"column": None,
"expressionType": "SQL",
"fromFormData": None,
"hasCustomLabel": None,
"label": "Density",
"optionName": "metric_c5rvwrzoo86_293h6yrv2ic",
"sqlExpression": "SUM(population)/SUM(area)",
},
},
"js_columns": [],
"js_data_mutator": "",
"js_tooltip": "",
"js_onclick_href": "",
"legend_format": ".1s",
"legend_position": "tr",
"where": "",
"having": "",
"filters": [],
+2 -2
View File
@@ -17,7 +17,7 @@
import json
import pandas as pd
from sqlalchemy import BigInteger, Text
from sqlalchemy import BigInteger, Float, Text
from superset import db
from superset.utils import core as utils
@@ -43,7 +43,7 @@ def load_sf_population_polygons(only_metadata=False, force=False):
"zipcode": BigInteger,
"population": BigInteger,
"contour": Text,
"area": BigInteger,
"area": Float,
},
index=False,
)
-76
View File
@@ -1,76 +0,0 @@
#!/usr/bin/env python
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# pylint: disable=C,R,W
#
# Copyright (C) 2016 Andi Albrecht, albrecht.andi@gmail.com
#
# This example is part of python-sqlparse and is released under
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
#
# This example illustrates how to extract table names from nested
# SELECT statements.
#
# See:
# https://groups.google.com/forum/#!topic/sqlparse/sL2aAi6dSJU
import sqlparse
from sqlparse.sql import Identifier, IdentifierList
from sqlparse.tokens import DML, Keyword
def is_subselect(parsed):
if not parsed.is_group():
return False
for item in parsed.tokens:
if item.ttype is DML and item.value.upper() == "SELECT":
return True
return False
def extract_from_part(parsed):
from_seen = False
for item in parsed.tokens:
if from_seen:
if is_subselect(item):
for x in extract_from_part(item):
yield x
elif item.ttype is Keyword:
raise StopIteration
else:
yield item
elif item.ttype is Keyword and item.value.upper() == "FROM":
from_seen = True
def extract_table_identifiers(token_stream):
for item in token_stream:
if isinstance(item, IdentifierList):
for identifier in item.get_identifiers():
yield identifier.get_name()
elif isinstance(item, Identifier):
yield item.get_name()
# It's a bug to check for Keyword here, but in the example
# above some tables names are identified as keywords...
elif item.ttype is Keyword:
yield item.value
# TODO(bkyryliuk): add logic to support joins and unions.
def extract_tables(sql):
stream = extract_from_part(sqlparse.parse(sql)[0])
return list(extract_table_identifiers(stream))
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
+8 -5
View File
@@ -2398,16 +2398,19 @@ class Superset(BaseSupersetView):
status=410,
)
query = db.session.query(Query).filter_by(results_key=key).one()
query = db.session.query(Query).filter_by(results_key=key).one_or_none()
if query is None:
return json_error_response(
"Data could not be retrieved. You may want to re-run the query.",
status=404,
)
rejected_tables = security_manager.rejected_tables(
query.sql, query.database, query.schema
)
if rejected_tables:
return json_error_response(
security_manager.get_table_access_error_msg(
"{}".format(rejected_tables)
),
status=403,
security_manager.get_table_access_error_msg(rejected_tables), status=403
)
payload = utils.zlib_decompress_to_string(blob)
+6 -2
View File
@@ -966,7 +966,9 @@ class BubbleViz(NVD3Viz):
self.series = form_data.get("series") or self.entity
d["row_limit"] = form_data.get("limit")
d["metrics"] = list(set([self.z_metric, self.x_metric, self.y_metric]))
d["metrics"] = [self.z_metric, self.x_metric, self.y_metric]
if len(set(self.metric_labels)) < 3:
raise Exception(_("Please use 3 different metric labels"))
if not all(d["metrics"] + [self.entity]):
raise Exception(_("Pick a metric for x, y and size"))
return d
@@ -2432,7 +2434,9 @@ class DeckPolygon(DeckPathViz):
fd = self.form_data
elevation = fd["point_radius_fixed"]["value"]
type_ = fd["point_radius_fixed"]["type"]
d["elevation"] = d.get(elevation["label"]) if type_ == "metric" else elevation
d["elevation"] = (
d.get(utils.get_metric_name(elevation)) if type_ == "metric" else elevation
)
return d
+20 -15
View File
@@ -24,12 +24,9 @@ from sqlalchemy.engine.result import RowProxy
from sqlalchemy.sql import select
from sqlalchemy.types import String, UnicodeText
from superset import app
from superset.db_engine_specs import engines
from superset.db_engine_specs.base import (
BaseEngineSpec,
builtin_time_grains,
create_time_grains_tuple,
)
from superset.db_engine_specs.base import BaseEngineSpec, builtin_time_grains
from superset.db_engine_specs.bigquery import BigQueryEngineSpec
from superset.db_engine_specs.hive import HiveEngineSpec
from superset.db_engine_specs.mssql import MssqlEngineSpec
@@ -38,6 +35,7 @@ from superset.db_engine_specs.oracle import OracleEngineSpec
from superset.db_engine_specs.pinot import PinotEngineSpec
from superset.db_engine_specs.postgres import PostgresEngineSpec
from superset.db_engine_specs.presto import PrestoEngineSpec
from superset.db_engine_specs.sqlite import SqliteEngineSpec
from superset.models.core import Database
from superset.utils.core import get_example_database
from .base_tests import SupersetTestCase
@@ -315,14 +313,21 @@ class DbEngineSpecsTestCase(SupersetTestCase):
)
def test_time_grain_blacklist(self):
blacklist = ["PT1M"]
time_grains = {"PT1S": "second", "PT1M": "minute"}
time_grain_functions = {"PT1S": "{col}", "PT1M": "{col}"}
time_grains = create_time_grains_tuple(
time_grains, time_grain_functions, blacklist
)
self.assertEqual(1, len(time_grains))
self.assertEqual("PT1S", time_grains[0].duration)
with app.app_context():
app.config["TIME_GRAIN_BLACKLIST"] = ["PT1M"]
time_grain_functions = SqliteEngineSpec.get_time_grain_functions()
self.assertNotIn("PT1M", time_grain_functions)
def test_time_grain_addons(self):
with app.app_context():
app.config["TIME_GRAIN_ADDONS"] = {"PTXM": "x seconds"}
app.config["TIME_GRAIN_ADDON_FUNCTIONS"] = {
"sqlite": {"PTXM": "ABC({col})"}
}
time_grains = SqliteEngineSpec.get_time_grains()
time_grain_addon = time_grains[-1]
self.assertEqual("PTXM", time_grain_addon.duration)
self.assertEqual("x seconds", time_grain_addon.label)
def test_engine_time_grain_validity(self):
time_grains = set(builtin_time_grains.keys())
@@ -330,8 +335,8 @@ class DbEngineSpecsTestCase(SupersetTestCase):
for engine in engines.values():
if engine is not BaseEngineSpec:
# make sure time grain functions have been defined
self.assertGreater(len(engine.time_grain_functions), 0)
# make sure that all defined time grains are supported
self.assertGreater(len(engine.get_time_grain_functions()), 0)
# make sure all defined time grains are supported
defined_grains = {grain.duration for grain in engine.get_time_grains()}
intersection = time_grains.intersection(defined_grains)
self.assertSetEqual(defined_grains, intersection, engine)
+25 -3
View File
@@ -104,9 +104,9 @@ class DatabaseModelTestCase(SupersetTestCase):
self.assertNotEquals(example_user, user_name)
def test_select_star(self):
main_db = get_example_database()
db = get_example_database()
table_name = "energy_usage"
sql = main_db.select_star(table_name, show_cols=False, latest_partition=False)
sql = db.select_star(table_name, show_cols=False, latest_partition=False)
expected = textwrap.dedent(
f"""\
SELECT *
@@ -115,7 +115,7 @@ class DatabaseModelTestCase(SupersetTestCase):
)
assert sql.startswith(expected)
sql = main_db.select_star(table_name, show_cols=True, latest_partition=False)
sql = db.select_star(table_name, show_cols=True, latest_partition=False)
expected = textwrap.dedent(
f"""\
SELECT source,
@@ -126,6 +126,28 @@ class DatabaseModelTestCase(SupersetTestCase):
)
assert sql.startswith(expected)
def test_select_star_fully_qualified_names(self):
db = get_example_database()
schema = "schema.name"
table_name = "table/name"
sql = db.select_star(
table_name, schema=schema, show_cols=False, latest_partition=False
)
fully_qualified_names = {
"sqlite": '"schema.name"."table/name"',
"mysql": "`schema.name`.`table/name`",
"postgres": '"schema.name"."table/name"',
}
fully_qualified_name = fully_qualified_names.get(db.db_engine_spec.engine)
if fully_qualified_name:
expected = textwrap.dedent(
f"""\
SELECT *
FROM {fully_qualified_name}
LIMIT 100"""
)
assert sql.startswith(expected)
def test_single_statement(self):
main_db = get_main_database()
+19 -1
View File
@@ -41,7 +41,7 @@ class DatabaseModelTestCase(SupersetTestCase):
col = TableColumn(column_name="foo", type="STRING")
self.assertEquals(col.is_time, False)
def test_cache_key_wrapper(self):
def test_has_extra_cache_keys(self):
query = "SELECT '{{ cache_key_wrapper('user_1') }}' as user"
table = SqlaTable(sql=query, database=get_main_database())
query_obj = {
@@ -55,4 +55,22 @@ class DatabaseModelTestCase(SupersetTestCase):
"extras": {"where": "(user != '{{ cache_key_wrapper('user_2') }}')"},
}
extra_cache_keys = table.get_extra_cache_keys(query_obj)
self.assertTrue(table.has_extra_cache_keys(query_obj))
self.assertListEqual(extra_cache_keys, ["user_1", "user_2"])
def test_has_no_extra_cache_keys(self):
query = "SELECT 'abc' as user"
table = SqlaTable(sql=query, database=get_main_database())
query_obj = {
"granularity": None,
"from_dttm": None,
"to_dttm": None,
"groupby": ["user"],
"metrics": [],
"is_timeseries": False,
"filter": [],
"extras": {"where": "(user != 'abc')"},
}
extra_cache_keys = table.get_extra_cache_keys(query_obj)
self.assertFalse(table.has_extra_cache_keys(query_obj))
self.assertListEqual(extra_cache_keys, [])