Clone Tools
  • last updated 19 mins ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
DRILL-7351: Added tokens to Web forms to prevent CSRF attacks

  1. … 21 more files in changeset.
DRILL-7222: Visualize estimated and actual row counts for a query

With statistics in place, it is useful to have the estimated rowcount along side the actual rowcount query profile's operator overview. A toggle button allows this with the estimated rows hidden by default

We can extract this from the Physical Plan section of the profile.

Added a toggle-ready table-column header

closes #1779

  1. … 5 more files in changeset.
DRILL-7276: Fixed an XSS vulnerability in Drill Web-UI query profile page

DRILL-7204: Add proper validation when creating plugin

- Added validation for an empty plugin name.

- Added an URL encoding for pluing name, so plugins with special characters can be accessed without issues.

- Replaced alerts with modal windows.

- Added a confirmation dialog when disabling a plugin on Update page.

    • -0
    • +54
    ./confirmationModals.ftl
  1. … 1 more file in changeset.
DRILL-7201: Strange symbols in error window (Windows)

Looks like some unicode characters creeped in, causing the rendering to be messed up ONLY for Windows OS. This PR patches that issue and ensures that the Alert symbol also appears correctly.

DRILL-7202: Failed query shows warning that fragments made no progress

This bug arises because of the `toggleWarning()` javascript function that shows the warning if the number of slow major fragments matches the number of major fragments.

For failed queries, the number of major fragments = 0; and that matches the number of tags (which is also zero for a non-running query). Hence the warning shows.

DRILL-7190: Missing backward compatibility for REST API with DRILL-6562

  1. … 1 more file in changeset.
DRILL-7048: Implement JDBC Statement.setMaxRows() with System Option

This introduces support for JDBC's Statement.setMaxRows(int) API, which can help Drill execute a query much faster if it knows that not ALL the records in the resultset will be consumed upfront.

This Commit introduces the core changes to support the feature within Drill's execution engine

Protobuf Changes

1. RunQuery: Added "autolimit_rowcount"

2. QueryProfile: Added "autoLimit"

3. Regenerated Java and C++ client files

REST API support

1. Support for REST server to interpret a submitted query and also for rendering this information for an executed query

2. Updates to the Freemarker templates (for WebUI)

3. Safety check within Javascript (for WebUI)

JDBC API support

1. Introduces backend execution of 'ALTER SESSION' to apply the auto-limiting of resultset size

2. Added Unit Tests for PreparedStatement and Statement objects

3. Added getter setter methods to be skipped in testing for org.apache.drill.jdbc.test.Drill2489CallsAfterCloseThrowExceptionsTest.testclosedPreparedStmtOfOpenConnMethodsThrowRight()

Updates based on review comments

Additional Updates

Test Cleanup

1. Revert Drill2489 hack

2. Formatting in *StatementTest

3. Removal f redundant `statement.close()`

4. Manage new Exception thrown when setting invalid maxRow values

Final updates

1. Test changes

2. Trim trailing spaces in auto-limit value (Javascript)

3. Before & After annotations to synchronize changes to system values for MaxRows(auto-limit)

Reorganized tests due to synchronized locking

Removed conflicting JsonCreator in QueryWrapper

Additional test cleanup

closes #1714

  1. … 31 more files in changeset.
DRILL-7061: Disable LIMIT Rows Option

Freemarker by default introduces a comma in numeric values greater than 999. This corrects that by removing the ',' in the default limit size.

However, since a Server-side implementation is in progress (DRILL-6960 and DRILL-7048), it is best to disable this for now. The latest commit in this will hide those capabilities in the WebUI until the server-side feature goes in.

X

closes #1689

DRILL-7052: Relative path for URL redirection

  1. … 5 more files in changeset.
DRILL-7036: Improve UI for alert and error messages closes #1644 This PR standardizes error and alert messages to a cleaner interface by leveraging Bootstraps UX elements for publishing the messages in a presentable format. Exceptions reported back to the browser and rendered in a neat tabular format (using Panels) All errors can be redirected to errorMessage.ftl which will render it in a neat format. Alerts are replaced with modals. Interactions (pages) affected by Alert modals 1. Missing Query submission 2. profile Query Rerun 3. invalid Profile Listing Fetch 4. invalid Option Value for update 5. Missing username/password submission

The errorMessage.ftl has been moved to root dir, and unused `error.ftl` was removed

    • -0
    • +104
    ./alertModals.ftl
  1. … 3 more files in changeset.
DRILL-6979: Added autofocus attribute to username on login page, and to query textbox on Query tab

DRILL-6971: Labelled Query State with color coding

closes #1611

DRILL-6971: Display query state in query result page

  1. … 3 more files in changeset.
DRILL-6050: Provide a limit to number of rows fetched for a query in UI

Currently, the WebServer side needs to process the entire set of results and stream it back to the WebClient.

Since the WebUI does paginate results, we can load a larger set for pagination on the browser client and relieve pressure off the WebServer to host all the data (most of which will never be streamed to the browser).

e.g. Fetching all rows from a 1Billion records table is impractical and can be capped at (say) 1K. Currently, the user has to explicitly specify LIMIT in the submitted query.

An option is provided in the field to allow for this entry, and can be set to selected by default for the Web UI.

The submitted query indicates that an auto-limiting wrapper was applied.

[Update #1] Updated as per comments

1. Limit Wrapping Unchecked by default

2. Full List configuration of results

[Update #2] Minor update

[Update #3] Followup

closes #1593

  1. … 3 more files in changeset.
DRILL-6942: Provide ability to sort list of profiles on Drill Web UI

This provides an option to order the list of query profiles based on any of the displayed fields, including total duration. This way, a user can easily identify long running queries.

In addition, the number of profiles listed per page for both, completed and running list of queries, has been made configurable with the parameter: `drill.exec.http.profiles_per_page` (default is 10,25,50,100)

closes #1594

    • -0
    • +11
    ./static/css/drill-dataTables.sortable.css
  1. … 3 more files in changeset.
DRILL-6939: Indicate when a query is submitted and is in progress

On query submission, a modal popup blocks further interaction until the result of the query are available.

Since the Query ID is not available at this point, the only way to cancel a running query is to navigate to it via the `/profiles` tab. For this, the modal allows a button to pop out to this tab without closing the current window which is waiting for the result-set.

[Update] Shared running query modal introduced

closes #1592

    • binary
    ./static/img/loader.gif
DRILL-6933: Fix ctrl+enter when Impersonation is disabled

Without impersonation, the key combination did not work because a conditional block of the FTLs skipped the Javascript functions required for submitting with the key combination.

This commit fixes that by unifying the functions that are common to both approaches of submitting a query (with and without impersoination)

[Update] Changes made to isOnlyImpersonationEnabled method and onlyImpersonationEnabled variable

[Update] userName is a global var in the script

closes #1591

  1. … 4 more files in changeset.
DRILL-6921: Add Clear button for /options filter

This commit adds the following search enhancements:

1. Addition of a clear ('x') button in the search field

2. If a filter term has been entered in the search box, on clicking the Update or Reset-to-Default button of any option, the reloaded page will re-apply the last entered filter term in the search box.

3. If the search box is empty, on clicking the Update or Reset-to-Default button of any option, the reloaded page will automatically filter out everything except the updated/reset option to show the changed value.

4. Customization of the quick search terms. (using defaults in drill-module.conf)

closes #1588

  1. … 3 more files in changeset.
DRILL-6922: Do not set return result set option on query level if it is the same as current value

1. Rename return result option name to `exec.query.return_result_set_for_ddl`.

2. Add check if option value is the same as current value in DrillSqlWorker before setting result set option on query level.

3. Separate Session and Query options on Web UI.

closes #1584

  1. … 5 more files in changeset.
DRILL-6879: Show warnings for potential performance issues

1. Introduced warning for non-progressive fragments. Based on a threshold (`drill.exec.http.profile.warning.progress.threshold`), if all fragments have not made progress within that time, a warning is issued. The default is 5 minutes (300 sec)

2. Introduced a warning if any of the buffered operators spill to disk.

3. Introduced a warning for operators where the longest running fragment runs beyond a minimum threshold (drill.exec.http.profile.warning.time.skew.min), and runs atleast 2 times longer than the average (drill.exec.http.profile.warning.time.skew.ratio.process). The clock symbol with a tooltip indicates the extent of the skew. For wait times, the ratio is defined by `drill.exec.http.profile.warning.time.skew.ratio.wait`

3. Introduced a warning for operators where the average wait time of a scan operator exceeds its processing time, for a minimum threshold (drill.exec.http.profile.warning.scan.wait.min). The turtle symbol with a tooltip indicates which scan operator spent more time waiting than processing.

4. TableBuilder Refactored

a. Using attribute map instead of String arguments, eg. for 'title'

b. Removed APIs that pass a hyperlink since that is never used.

closes #1572

    • binary
    ./static/img/turtle.png
  1. … 8 more files in changeset.
DRILL-6886: Cancel Query Button for running queries

The Freemarker template missed a check for a query's Running state to display the [Cancel] button.

The fix is trivial and only needs the check.

DRILL-6883: Force reload of options after resetting parameter

If an update is initiated, the webpage loaded changes. Attempting a reset tries to reload this page, but it does not show the updated values from the back end.

This patch forces the reload of updated values by redirecting to /options page

Use AJAX call for Update and Reset

Eliminates the need for window.location=<redirectURL>

is Number check

Added comments to explain extraction

close apache/drill#1563

DRILL-6867: WebUI Query editor cursor position

closes #1551

DRILL-6668: In Web UI, highlight options that are not default values

This commit introduces a new button on the options page that allows a user to reset an option to its system default value.

To simplify things, a tooltip is shown when the mouse hovers over the button. If the option value is already default, the button is disabled.

Currently, the Update button redirects to /option/optionName . This change reuses what we already are using to set the default (using AJAX) and auto-refreshing

Switch [Default] label to [Reset]

Patch To Pass StatusResourcesTest

closes #1543

  1. … 1 more file in changeset.
DRILL-6848: Duration panel in a query profile's WebUI does not open

DRILL-5571 ( PR #1531 ) accidentally introduced a bug that permanently keeps the "Duration" panel closed instead of opening it. This trivial patch fixes that.

DRILL-2035: Add ability to cancel multiple queries

Currently Drill UI allows canceling one query at a time.

This commit (on lines of DRILL-5571 / PR #1531) allows for cancelling multiple `running` queries.

DRILL-5571: Cancel running query from its Web UI

Currently, a running query can be cancelled by navigating to the Edit Query Tab of the profile page, making it difficult to access. This commit allows the user to cancel.

In addition, the Duration segment is also made visible by default rather than collapsed.

DRILL-6837: Missing reference for dynamically created Javascript library

A PR for DRILL-6084 broke the auto-complete library required for Edit Query page, with the removal of the static javascript library.

https://github.com/apache/drill/pull/1491/files#diff-2bb3c04f1a9eead1faf57212cce5d2a9

The dynamically loaded script is not defined in the Freemarker template page.

The fix is trivial.

DRILL-6611: Add Ctrl+Enter support for query submission

1. BugFix on parent commit: Ensure query submission is done with user name when impersonation is enabled.

2. Support non-Mac browsers

3. Support keyboard submission for profile pages with Edit Query tab.