This project is mirrored from https://github.com/metabase/metabase.
Pull mirroring updated .
- Dec 14, 2022
-
-
Gustavo Saiani authored
-
Nick Fitzpatrick authored
* Convert to TypeScript, handle ColumnItem and MetadataTable * more progress * handled numeric inputs * Transition InputBlurChange to core Input component * Removing input class from legacy date picker just incase * Small style adjustments in Admin and Viz Settings * working on tests * Tests passing * Adjusting styling * PR Cleanup * add input size=large (#27217) * Suppress console log when using `with-log-messages-for-level` (#26468) * disable additivity when using "with-log-level" * only set when parent is root * wording * remove a test that is no longer needed * fix indents * one missing indent fix * [CI] Add `concurrency` to the `drivers` workflow (#27223) * Fix datetime-diff helper text (#27224) * Improve datetimeDiff type error message (#27225) * Update test * Update implementations * Relieve db pressure on api/health check (#27192) * Relieve db pressure on api/health check https://github.com/metabase/metabase/issues/26266 Servers under heavy load can be slow to respond to the api/health check. This can lead to k8s killing healthy instances happily humming along serving requests. One idea floated was to use QoSFilters https://www.eclipse.org/jetty/javadoc/jetty-9/org/eclipse/jetty/servlets/QoSFilter.html to prioritize those requests in front of others. But I suspect this might not be our bottleneck. Our health endpoint was updated to see if it could acquire an endpoint when we were dealing with connection pool issues. We were reporting the instance was healthy once it has finished the init process, but would report healthy if 60/15 app-db connections were used and no actual queries could complete. The remedy was adding `(sql-jdbc.conn/can-connect-with-spec? {:datasource (mdb.connection/data-source)})` to the endpoint. But now to get information about the health of the system we have to wait in the queue to get a datasource. The hope is that this change which monitors for recent db checkins (query success) and checkouts (query begun) can be a proxy for db activity without having to wait for a connection and hit the db ourselves. Some simple and crude benchmarking: - use `siege` to hit `api/database/<app-db>/sync_schema` - in a separate tab, use `siege` to hit `api/health` Three trials with unconditional db access and conditional db access (look for recent activity set by the new `ConnectionCustomizer`). One siege client is synching the app-db's schema with 80 clients each sending 60 requests. the other has 1 client sending 60 requests to api/health. Run | Elapsed Time | max tx | tx rate before change | 7.16s | 0.79s | 8.38 tx/s before change | 23.91s | 1.44s | 2.51 tx/s before change | 13.00s | 0.50s | 4.62 tx/s ---------------------------------------------------- after change | 4.46s | 0.27s | 13.45 tx/s after change | 5.81s | 0.61s | 10.33 tx/s after change | 4.54s | 0.44s | 13.22 tx/s Full(er) results below: ``` Unconditional db access ======================= siege -c80 -r 40 "http://localhost:3000/api/database/2/sync_schema POST" -H "Cookie: $SESSION" siege -c 1 -r 60 "http://localhost:3000/api/health " Elapsed time: 7.16 secs Response time: 0.12 secs Transaction rate: 8.38 trans/sec Longest transaction: 0.79 Shortest transaction: 0.01 Elapsed time: 23.91 secs Response time: 0.40 secs Transaction rate: 2.51 trans/sec Longest transaction: 1.44 Shortest transaction: 0.02 Elapsed time: 13.00 secs Response time: 0.22 secs Transaction rate: 4.62 trans/sec Longest transaction: 0.50 Shortest transaction: 0.06 Conditional db access ============================================================== Elapsed time: 4.46 secs Response time: 0.07 secs Transaction rate: 13.45 trans/sec Longest transaction: 0.27 Shortest transaction: 0.01 Elapsed time: 5.81 secs Response time: 0.10 secs Transaction rate: 10.33 trans/sec Longest transaction: 0.61 Shortest transaction: 0.00 Elapsed time: 4.54 secs Response time: 0.08 secs Transaction rate: 13.22 trans/sec Longest transaction: 0.44 Shortest transaction: 0.01 ``` * Remove reflection in `.put` call (not the reflections trategy) also remove the call to `classloader/the-classloader` as it did nothing * Comment and settle on a single method * tests * select from db twice had a failure in CI. give it time to do its thing with another db call * block to wait for timestamp update? * unflake the tests tasks and events from outside the thread can hit the db. the ConnectionCustomizer is also run from c3p0 controlled threads so we can't easily isolate everything to our thread Was running ```clojure (comment (dotimes [n 5] (dotimes [_ 100] (recent-activity-test) (CheckinTracker-test)) (println (* (inc n) 100))) ) ``` to run the tests 500 times and would keep getting flakes at a rate ~1/100 to 1/500. Just frustration for the future. * typehint * Switch it up a bit Tests were flaking in h2 and I don't know why. I'm switching to just updating recent activity on most methods. * final touches Co-authored-by:
Aleksandr Lesnenko <alxnddr@users.noreply.github.com> Co-authored-by:
Ngoc Khuat <qn.khuat@gmail.com> Co-authored-by:
Nemanja Glumac <31325167+nemanjaglumac@users.noreply.github.com> Co-authored-by:
Cal Herries <39073188+calherries@users.noreply.github.com> Co-authored-by:
dpsutton <dan@dpsutton.com>
-
Cal Herries authored
-
- Dec 13, 2022
-
-
john-metabase authored
Updates embedded H2 driver to v2.1.212. When a local H2 v1 file-based application database is detected, it will be automatically updated in-place at startup. Migrations and tests have been updated to account for changes in H2 behavior. Sample data and test harness database files in the repo have all been updated to H2 v2 file format. Co-authored-by:
Braden Shepherdson <braden@metabase.com> Co-authored-by:
Cam Saul <github@camsaul.com> Co-authored-by:
Cam Saul <1455846+camsaul@users.noreply.github.com>
-
Anton Kulyk authored
* Add basic raw data picker for app scaffolding (#25997) * Show data app page ID params in editing mode (#25943) * Data apps layout updates (#25930) * play with grid sizes to make apps feel appier [ci skip] * move app nav to bar inside app * only hide other header buttons outside of edit mode * tweak overflow issue * fix header width on data apps * add control to see app contents * set data apps layout constants contextually [ci skip] * remove hardcoded value [ci skip] * extract conextual header styles [ci skip] * set max-width on paramaters for data apps [ci skip] * move data apps nav deeper, only show if not editing [ci skip] * add spacing to contents trigger, rm old code [ci skip] * rm table thing for now [ci skip] * Fixes for data app layout updates (#25962) * Reorder import * Fix type * Fix missing translation, move out URL * Remove not used import * Rework `getSelectedItems` utility for data apps * Fix selected data app page highlighting * Don't reload app navbar on page change * Change nav item links look * Remove `DataAppPageSidebarLink` * Turn nav into HTML list * Use styled components * Fix edit button covered by visualizations * Fix opening homepage * Remove redundant prop Co-authored-by:
Anton Kulyk <kuliks.anton@gmail.com> * First take at parameterized data app page titles (#25938) * Bring `DataAppContext` back * Pass `onFocus` and `onBlur` to `EditableText` * Export `EditableTextProps` * Add basic `DataAppPageTitle` component * Use `DataAppPageTitle` * Fix component name * Add primitive autocompletion to page title input * Add `title_template` to `DataAppNavItem` type * Tweak value management in `DataAppPageTitle` * Handle `null` values in titles more gracefully * Don't show suggestions without detail cards * Don't add whitespace when pasting a token * Don't update app's collection all the time * Add data app related selectors to dashboard selectors * Add redux state to keep title template changes * Update page title template on page save * Wire up `DataAppPageTitle` with dashboard code * Fix unit tests * Reset state on exiting editing mode * Add back button to template data picker * Add `PanePicker` UI component * Add basic `RawDataPanePicker` component * displays databases, schemas, tables * allows picking a database and a schema (no tables yet) * Allow picking tables Supports single-selection and multi-selection modes * Auto-select single database schema * Use `.ts` instead of `.tsx` for hook file * Style `PanePicker` * Add `onTablesChange` callback prop to data picker * Use new data picker in new app modal * Use new data picker in add data modal * Remove `DataAppDataPicker` Co-authored-by:
Kyle Doherty <5248953+kdoh@users.noreply.github.com> * Make `DataPicker` controlled (#26018) * Add data type picker to scaffolding data picker (#26019) * Move `useSelectedTables` one level up * Extract `DataPickerSelectedItem` type * Add `type` to `DataPickerValue` type * Handle `type` in `useDataPickerValue` hook * Add data type picker step * Add back button to raw data picker * Add `CardPicker` * Tweak spacing * Move `VirtualTable` to shared picker types * Temporary disable saved questions data type * Simplify schema loading for models and questions * Remove redundant `useMemo` * Rename `RawDataPanePicker` to `RawDataPicker` (#26020) * Add safety checks to scaffolding data picker (#26023) * Pass available data types as a prop to the picker * Use nested queries settings for data types list * Offer models only if instance has at least one * Check data access * Break `DataPicker` into container and view * Make `DataPicker` cover the whole container * Add items filters API to data app scaffolding data picker (#26024) * Uncomment saved questions data type * Add data picker filters API types * Apply data type filters * Auto pick a data type when only one is available * Export data picker types * Add `DataAppScaffoldingDataPicker` component * Use `DataAppScaffoldingDataPicker` * Improve collection selection for scaffolding data picker (#26033) * Add collection ID to data picker value type * Handle collection ID in `onChange` * Handle collection ID in `CardPicker` * Automatically open root collection * Add basic search to scaffolding data picker (#26039) * Add data picker context * Add global search to data picker * Add basic search UI to new app modal * Don't use database ID in search * Scope search depending on selected data type * Expose more data picker types * Style search input * Keep filtered out data types in mind for search * Move `MIN_SEARCH_LENGTH` to constants file * Fix can't select nested collection in card picker (#26122) * Fix conflicts Co-authored-by:
Kyle Doherty <5248953+kdoh@users.noreply.github.com>
-
Anton Kulyk authored
* Extend `field` types * Add series types * Fix `FieldId` type import * Add `metabase/visualizations/types` * Add drill types * Specify `Question.prototype.pivot` return type * Update `AutomaticDashboardDrill` * Update `ColumnFilterDrill` * Update `CompareToRestDrill` * Update `DashboardClickDrill` * Update `DistributionDrill` * Update `ForeignKeyDrill` * Update `ObjectDetailDrill` * Update `PivotByCategoryDrill` * Update `PivotByLocationDrill` * Update `PivotByTimeDrill` * Update `QuickFilterDrill` * Update `SummarizeColumnByTimeDrill` * Update `SummarizeColumnDrill` * Update `UnderlyingRecordsDrill` * Update `ZoomDrill` * Update `FormatDrill` (former `FormatAction`) * Update `SortDrill` (former `SortAction`) * Update `NativeDrillFallback` * Fix types * Fix handling missing `clicked` object * Simplify drill type hierarchy
-
- Dec 12, 2022
-
-
Alexander Polyankin authored
-
Alexander Polyankin authored
-
- Dec 11, 2022
-
-
Ryan Laurie authored
-
- Dec 09, 2022
-
-
Aleksandr Lesnenko authored
-
Alexander Polyankin authored
-
Alexander Polyankin authored
-
- Dec 08, 2022
-
-
Aleksandr Lesnenko authored
-
Aleksandr Lesnenko authored
-
Nemanja Glumac authored
-
Mahatthana (Kelvin) Nomsawadi authored
* Upgrade `react-markdown` version to the latest * Fix external link in markdown not having a proper target * Add tests
-
Nemanja Glumac authored
-
Mahatthana (Kelvin) Nomsawadi authored
* Hide side bar toggle when appropriate * Show collection breadcrumbs by default * Address review: Simplifying the code. * Address review: Cleanup boolean names * Fix Cypress test failure after behavior change * Rename some boolean flag to avoid confusion * Add embedding tests
-
- Dec 07, 2022
-
-
Aleksandr Lesnenko authored
* remove TextInput and use core/Input * review
-
- Dec 06, 2022
-
-
Nick Fitzpatrick authored
* Change hasBreakout check * Adding computedSettings prop to ChartSettings
-
Alexander Polyankin authored
-
Anton Kulyk authored
* Add `SnippetCollectionForm` * Add `SnippetCollectionFormModal` * Use new form * Remove old form * Clean up snippet collections entity * Fix submit button title * Fix initial values
-
Anton Kulyk authored
* Add `NativeQuerySnippet` type * Add `NativeQuerySnippet` mocks * Add `snippets` to entities store type * Add `SnippetCollectionName` component * Support snippet folders in `FormCollectionPicker` * Add `SnippetForm` * Add `SnippetFormModal` * Use new `SnippetFormModal` * Remove `SnippetModal` * Fix initial values formatting * Ensure errors are displayed * Simplify archive button * Remove commented out code * Detach entity loader props from own props * Add unit tests * Fix test names * Fix modal props usage * Use `NativeQuerySnippetId` type * Make description field nullable * Fix `FormTextArea` styling
-
- Dec 05, 2022
-
-
Anton Kulyk authored
-
Alexander Polyankin authored
-
Alexander Polyankin authored
-
Alexander Polyankin authored
-
- Dec 02, 2022
-
-
Natalie authored
-
Aleksandr Lesnenko authored
* pie percent switch * review * Migrate to card viz-settings v.2 (#26798) * Migrate to card viz-settings v.2 This uses the new :pie.percent_visibility key (an enum) instead of a collection of booleans [#26776] * Move to def-json-migration * Don't migrate empty values * fix specs Co-authored-by:
Tim Macdonald <tim@metabase.com>
-
Aleksandr Lesnenko authored
-
- Dec 01, 2022
-
-
Mahatthana (Kelvin) Nomsawadi authored
* Refactor so static combo chart is ready for reordering * Correct test names * Clean up static viz combo chart BE API * sort static combo chart * Order static funnel chart * Remove unused import and function * Fix BE tests * Remove custom column name tests since logic is moved to FE * Remove graph.series_order when changing dimensions (#26842) * review Co-authored-by:
Nick Fitzpatrick <nick@metabase.com> Co-authored-by:
Aleksandr Lesnenko <alxnddr@gmail.com>
-
Anton Kulyk authored
-
Cal Herries authored
* Implement now for sql drivers * Remove unused import * Add tests * Add more tests * Implement bigquery, mysql, postgres * Test now as argument * Fix FE type inferencer * Change feature flag to date-arithmetics * Implement h2 driver * Fix tests for sqlite * Add snowflake implementation * Remove type test * Fix test for sqlite * Update how we handle autocomplete and format for zero-arity functions in ExpressionEditor (#26563) * Update suggestionText function * Suggest with closing parens if zero-arity * Format zero-arity functions with () * Refactor formatFunction * Remove unused imports * Add presto implementation * Add sqlserver implementation * Test in multiple timezones * Remove setting test driver * Add sparksql implementation * Fix count() fe unit test * Add fe MBQL unit test for now() * Fix sparksql implementation * Add vertica implementation * Add oracle implementation * Add vertica implementation * Remove accidental form * Fix vertica implementation for report timezones * Remove unused multimethod * Remove unused feature * Update sparksql * Fix fe unit tests * Fix fe unit tests * Update hive implementation * Revert "Fix fe unit tests" This reverts commit fde4dd0d. * Revert "Fix fe unit tests" This reverts commit 7b7429ea. * Revert "Fix count() fe unit test" This reverts commit c5c6f6f9. * Revert "Refactor formatFunction" This reverts commit ac50e73e. * Revert "Update how we handle autocomplete and format for zero-arity functions in ExpressionEditor (#26563)" This reverts commit cf39634e. * Update hive * snowflake: convert type to timestamptz * sqlserver: rename date-trunc to zeroed-date-part * Wrap with database type info * Change fe unit test back to now without parens * Change MBQL clauses config for now to return type "datetime" * Fix presto * Add some fe unit tests for parsing and resolving * Update helper-text-strings * Change from second to millisecond precision * Remove test for second precision * presto: Change from second to millisecond precision * vertica: Change from second to millisecond precision * vertica: Change from second to millisecond precision * Change feature flag from date-arithmetics to now * Change feature flag from date-arithmetics to now, mbql schema * Allow now to be used in filter clauses * Add test for filter * Implement driver/database-supports? for each driver that implements :now * Tidy tests * Add back default sql implementation * Add sqlite feature flag * Add mongo implementation * Fix mongo * Format rows * Change vertica to return timestamp with time zone * Fix presto tests * Remove unused require * Update h2 function to return timestamp with time zone * mongo: calculate now during query execution, not processing, for versions >=4.2 (#26822) * replace with $$NOW * Remove unused import * Add back previous now implementation for versions <4.2 * Throw an error if version is <4.2 * Add i18n * Ignore patch version * Clean up `SchedulePicker` component (#26839) * Move `SchedulePicker` to its own directory * Sort imports * Do basic clean up * Extract `DEFAULT_DAY` to a constant * Extract styled components * Convert `SchedulePicker` to TypeScript * Add `SchedulePicker` container * Export `SchedulePicker` options * Add basic `SchedulePicker` story * Fix `SchedulePicker` crashes Storybook * Tweak Storybook file * Build datetime filters as datetime before question is saved (#26679) * Revert "Update h2 function to return timestamp with time zone" This reverts commit f7cce3ea7ccbbfc886d0942d66b1f8f60feb6aba. Co-authored-by:
Gustavo Saiani <gus@metabase.com> Co-authored-by:
Anton Kulyk <kuliks.anton@gmail.com>
-
Aleksandr Lesnenko authored
* fix row chart for remapped columns * static viz remapped values
-
Aleksandr Lesnenko authored
-
Alexander Polyankin authored
-
Alexander Polyankin authored
-
Gustavo Saiani authored
-
Anton Kulyk authored
* Move `SchedulePicker` to its own directory * Sort imports * Do basic clean up * Extract `DEFAULT_DAY` to a constant * Extract styled components * Convert `SchedulePicker` to TypeScript * Add `SchedulePicker` container * Export `SchedulePicker` options * Add basic `SchedulePicker` story * Fix `SchedulePicker` crashes Storybook * Tweak Storybook file
-
Aleksandr Lesnenko authored
-