diff --git a/core/trino-web-ui/pom.xml b/core/trino-web-ui/pom.xml
index df1e75ccc365..f46ed335964b 100644
--- a/core/trino-web-ui/pom.xml
+++ b/core/trino-web-ui/pom.xml
@@ -99,13 +99,13 @@
-
- |
- - {this.props.title} - | -
+
+
+
+ |
+ + {this.props.title} + | +
{this.state.errorText ? "Error: " + this.state.errorText : null}
+{this.state.errorText ? 'Error: ' + this.state.errorText : null}
| ID | -Host | -State | -- | - | - | - | Rows | -Rows/s | -Bytes | -Bytes/s | -Elapsed | -CPU Time | -Mem | -Peak Mem | - {taskRetriesEnabled && -Est Mem | - } +ID | +Host | +State | ++ + | ++ + | ++ + | ++ + | +Rows | +Rows/s | +Bytes | +Bytes/s | +Elapsed | +CPU Time | +Mem | +Peak Mem | + {taskRetriesEnabled &&Est Mem | } {renderedTasks}
|---|
|
-
-
-
-
|
-
|
+
+
+
+
|
+
-
|
-
-
|
-
-
|
-
-
|
-
-
|
- - - - - | -||||||||||||||||||||||||||||||||||||||||
-
|
- |||||||||||||||||||||||||||||||||||||||||||||
-
|
- |||||||||||||||||||||||||||||||||||||||||||||
| - {this.renderTaskFilter()} - | -|||||||||||||||||||||||||||||||||||||||||||||
| - {this.renderTaskList(taskRetriesEnabled)} - | -|||||||||||||||||||||||||||||||||||||||||||||
+
|
+
+
|
+
+
|
+
+
|
+
+
|
+ + + + + | +||||||||||||||||||||||||||||||||||||||||
+
|
+ |||||||||||||||||||||||||||||||||||||||||||||
+
|
+ |||||||||||||||||||||||||||||||||||||||||||||
| {this.renderTaskFilter()} | +|||||||||||||||||||||||||||||||||||||||||||||
| {this.renderTaskList(taskRetriesEnabled)} | +|||||||||||||||||||||||||||||||||||||||||||||
| - {this.renderStageRefreshButton()} - | -
| {this.renderStageRefreshButton()} | +
@@ -1030,18 +1179,20 @@ export class QueryDetail extends React.Component {
| - {warning.warningCode.name} - | -- {warning.message} - | +{warning.warningCode.name} | +{warning.message} |
| - Error Type - | -- {query.errorType} - | -
| - Error Code - | -- {query.errorCode.name + " (" + this.state.query.errorCode.code + ")"} - | -
| - Stack Trace - - - - | -
-
- {QueryDetail.formatStackTrace(query.failureInfo)}
-
- |
-
| Error Type | +{query.errorType} | +
| Error Code | ++ {query.errorCode.name + ' (' + this.state.query.errorCode.code + ')'} + | +
| + Stack Trace + + + + | +
+ {QueryDetail.formatStackTrace(query.failureInfo)}
+ |
+
| - User - | -- {query.session.user} - - - - - | -
| - Principal - | -- {query.session.principal} - | -
| - Source - | -- {query.session.source} - | -
| - Catalog - | -- {query.session.catalog} - | -
| - Schema - | -- {query.session.schema} - | -
| - Time zone - | -- {query.session.timeZone} - | -
| - Client Address - | -- {query.session.remoteUserAddress} - | -
| - Client Tags - | -- {query.session.clientTags.join(", ")} - | -
| - Session Properties - | -- {this.renderSessionProperties()} - | -
| - Resource Estimates - | -- {this.renderResourceEstimates()} - | -
| User | ++ {query.session.user} + + + + + | +
| Principal | +{query.session.principal} | +
| Source | +{query.session.source} | +
| Catalog | +{query.session.catalog} | +
| Schema | +{query.session.schema} | +
| Time zone | +{query.session.timeZone} | +
| Client Address | +{query.session.remoteUserAddress} | +
| Client Tags | +{query.session.clientTags.join(', ')} | +
| Session Properties | +{this.renderSessionProperties()} | +
| Resource Estimates | +{this.renderResourceEstimates()} | +
| - Resource Group - | -- {query.resourceGroupId ? query.resourceGroupId.join(".") : "n/a"} - | -
| - Submission Time - | -- {formatShortDateTime(new Date(query.queryStats.createTime))} - | -
| - Completion Time - | -- {query.queryStats.endTime ? formatShortDateTime(new Date(query.queryStats.endTime)) : ""} - | -
| - Elapsed Time - | -- {query.queryStats.elapsedTime} - | -
| - Queued Time - | -- {query.queryStats.queuedTime} - | -
| - Analysis Time - | -- {query.queryStats.analysisTime} - | -
| - Planning Time - | -- {query.queryStats.planningTime} - | -
| - Execution Time - | -- {query.queryStats.executionTime} - | -
| Resource Group | ++ {query.resourceGroupId ? query.resourceGroupId.join('.') : 'n/a'} + | +
| Submission Time | ++ {formatShortDateTime(new Date(query.queryStats.createTime))} + | +
| Completion Time | ++ {query.queryStats.endTime + ? formatShortDateTime(new Date(query.queryStats.endTime)) + : ''} + | +
| Elapsed Time | +{query.queryStats.elapsedTime} | +
| Queued Time | +{query.queryStats.queuedTime} | +
| Analysis Time | +{query.queryStats.analysisTime} | +
| Planning Time | +{query.queryStats.planningTime} | +
| Execution Time | +{query.queryStats.executionTime} | +
| - CPU Time - | -- {query.queryStats.totalCpuTime} - | - {taskRetriesEnabled && -- {query.queryStats.failedCpuTime} - | - } -
| - Planning CPU Time - | -- {query.queryStats.planningCpuTime} - | -|
| - Scheduled Time - | -- {query.queryStats.totalScheduledTime} - | - {taskRetriesEnabled && -- {query.queryStats.failedScheduledTime} - | - } -
| - Input Rows - | -- {formatCount(query.queryStats.processedInputPositions)} - | - {taskRetriesEnabled && -- {query.queryStats.failedProcessedInputPositions} - | - } -
| - Input Data - | -- {parseAndFormatDataSize(query.queryStats.processedInputDataSize)} - | - {taskRetriesEnabled && -- {query.queryStats.failedProcessedInputDataSize} - | - } -
| - Physical Input Rows - | -- {formatCount(query.queryStats.physicalInputPositions)} - | - {taskRetriesEnabled && -- {formatCount(query.queryStats.failedPhysicalInputPositions)} - | - } -
| - Physical Input Data - | -- {parseAndFormatDataSize(query.queryStats.physicalInputDataSize)} - | - {taskRetriesEnabled && -- {parseAndFormatDataSize(query.queryStats.failedPhysicalInputDataSize)} - | - } -
| - Physical Input Read Time - | -- {query.queryStats.physicalInputReadTime} - | - {taskRetriesEnabled && -- {query.queryStats.failedPhysicalInputReadTime} - | - } -
| - Internal Network Rows - | -- {formatCount(query.queryStats.internalNetworkInputPositions)} - | - {taskRetriesEnabled && -- {formatCount(query.queryStats.failedInternalNetworkInputPositions)} - | - } -
| - Internal Network Data - | -- {parseAndFormatDataSize(query.queryStats.internalNetworkInputDataSize)} - | - {taskRetriesEnabled && -- {parseAndFormatDataSize(query.queryStats.failedInternalNetworkInputDataSize)} - | - } -
| - Peak User Memory - | -- {parseAndFormatDataSize(query.queryStats.peakUserMemoryReservation)} - | -|
| - Peak Revocable Memory - | -- {parseAndFormatDataSize(query.queryStats.peakRevocableMemoryReservation)} - | -|
| - Peak Total Memory - | -- {parseAndFormatDataSize(query.queryStats.peakTotalMemoryReservation)} - | -|
| - Cumulative User Memory - | -- {formatDataSize(query.queryStats.cumulativeUserMemory / 1000.0) + "*seconds"} - | - {taskRetriesEnabled && -- {formatDataSize(query.queryStats.failedCumulativeUserMemory / 1000.0) + "*seconds"} - | - } -
| - Output Rows - | -- {formatCount(query.queryStats.outputPositions)} - | - {taskRetriesEnabled && -- {formatCount(query.queryStats.failedOutputPositions)} - | - } -
| - Output Data - | -- {parseAndFormatDataSize(query.queryStats.outputDataSize)} - | - {taskRetriesEnabled && -- {parseAndFormatDataSize(query.queryStats.failedOutputDataSize)} - | - } -
| - Written Rows - | -- {formatCount(query.queryStats.writtenPositions)} - | -|
| - Logical Written Data - | -- {parseAndFormatDataSize(query.queryStats.logicalWrittenDataSize)} - | -|
| - Physical Written Data - | -- {parseAndFormatDataSize(query.queryStats.physicalWrittenDataSize)} - | - {taskRetriesEnabled && -- {parseAndFormatDataSize(query.queryStats.failedPhysicalWrittenDataSize)} - | - } -
| - Spilled Data - | -- {parseAndFormatDataSize(query.queryStats.spilledDataSize)} - | -|
| CPU Time | +{query.queryStats.totalCpuTime} | + {taskRetriesEnabled && ( +{query.queryStats.failedCpuTime} | + )} +
| Planning CPU Time | +{query.queryStats.planningCpuTime} | +|
| Scheduled Time | +{query.queryStats.totalScheduledTime} | + {taskRetriesEnabled && ( +{query.queryStats.failedScheduledTime} | + )} +
| Input Rows | ++ {formatCount(query.queryStats.processedInputPositions)} + | + {taskRetriesEnabled && ( ++ {query.queryStats.failedProcessedInputPositions} + | + )} +
| Input Data | ++ {parseAndFormatDataSize(query.queryStats.processedInputDataSize)} + | + {taskRetriesEnabled && ( ++ {query.queryStats.failedProcessedInputDataSize} + | + )} +
| Physical Input Rows | ++ {formatCount(query.queryStats.physicalInputPositions)} + | + {taskRetriesEnabled && ( ++ {formatCount(query.queryStats.failedPhysicalInputPositions)} + | + )} +
| Physical Input Data | ++ {parseAndFormatDataSize(query.queryStats.physicalInputDataSize)} + | + {taskRetriesEnabled && ( ++ {parseAndFormatDataSize( + query.queryStats.failedPhysicalInputDataSize + )} + | + )} +
| Physical Input Read Time | +{query.queryStats.physicalInputReadTime} | + {taskRetriesEnabled && ( ++ {query.queryStats.failedPhysicalInputReadTime} + | + )} +
| Internal Network Rows | ++ {formatCount(query.queryStats.internalNetworkInputPositions)} + | + {taskRetriesEnabled && ( ++ {formatCount(query.queryStats.failedInternalNetworkInputPositions)} + | + )} +
| Internal Network Data | ++ {parseAndFormatDataSize(query.queryStats.internalNetworkInputDataSize)} + | + {taskRetriesEnabled && ( ++ {parseAndFormatDataSize( + query.queryStats.failedInternalNetworkInputDataSize + )} + | + )} +
| Peak User Memory | ++ {parseAndFormatDataSize(query.queryStats.peakUserMemoryReservation)} + | +|
| Peak Revocable Memory | ++ {parseAndFormatDataSize( + query.queryStats.peakRevocableMemoryReservation + )} + | +|
| Peak Total Memory | ++ {parseAndFormatDataSize(query.queryStats.peakTotalMemoryReservation)} + | +|
| Cumulative User Memory | ++ {formatDataSize(query.queryStats.cumulativeUserMemory / 1000.0) + + '*seconds'} + | + {taskRetriesEnabled && ( ++ {formatDataSize( + query.queryStats.failedCumulativeUserMemory / 1000.0 + ) + '*seconds'} + | + )} +
| Output Rows | ++ {formatCount(query.queryStats.outputPositions)} + | + {taskRetriesEnabled && ( ++ {formatCount(query.queryStats.failedOutputPositions)} + | + )} +
| Output Data | ++ {parseAndFormatDataSize(query.queryStats.outputDataSize)} + | + {taskRetriesEnabled && ( ++ {parseAndFormatDataSize(query.queryStats.failedOutputDataSize)} + | + )} +
| Written Rows | ++ {formatCount(query.queryStats.writtenPositions)} + | +|
| Logical Written Data | ++ {parseAndFormatDataSize(query.queryStats.logicalWrittenDataSize)} + | +|
| Physical Written Data | ++ {parseAndFormatDataSize(query.queryStats.physicalWrittenDataSize)} + | + {taskRetriesEnabled && ( ++ {parseAndFormatDataSize( + query.queryStats.failedPhysicalWrittenDataSize + )} + | + )} +
| Spilled Data | ++ {parseAndFormatDataSize(query.queryStats.spilledDataSize)} + | +
| - Parallelism - | -
-
-
- Loading ...
- |
-
| - {formatCount(this.state.cpuTimeRate[this.state.cpuTimeRate.length - 1])} - | -|
| - Scheduled Time/s - | -
-
-
- Loading ...
- |
-
| - {formatCount(this.state.scheduledTimeRate[this.state.scheduledTimeRate.length - 1])} - | -|
| - Input Rows/s - | -
-
-
- Loading ...
- |
-
| - {formatCount(this.state.rowInputRate[this.state.rowInputRate.length - 1])} - | -|
| - Input Bytes/s - | -
-
-
- Loading ...
- |
-
| - {formatDataSize(this.state.byteInputRate[this.state.byteInputRate.length - 1])} - | -|
| - Physical Input Bytes/s - | -
-
-
- Loading ...
- |
-
| - {formatDataSize(this.state.physicalInputRate[this.state.physicalInputRate.length - 1])} - | -|
| - Memory Utilization - | -
-
-
- Loading ...
- |
-
| - {formatDataSize(this.state.reservedMemory[this.state.reservedMemory.length - 1])} - | -|
| Parallelism | +
+
+
+
+ Loading ...
+
+ |
+
| + {formatCount(this.state.cpuTimeRate[this.state.cpuTimeRate.length - 1])} + | +|
| Scheduled Time/s | +
+
+
+
+ Loading ...
+
+ |
+
| + {formatCount( + this.state.scheduledTimeRate[ + this.state.scheduledTimeRate.length - 1 + ] + )} + | +|
| Input Rows/s | +
+
+
+
+ Loading ...
+
+ |
+
| + {formatCount( + this.state.rowInputRate[this.state.rowInputRate.length - 1] + )} + | +|
| Input Bytes/s | +
+
+
+
+ Loading ...
+
+ |
+
| + {formatDataSize( + this.state.byteInputRate[this.state.byteInputRate.length - 1] + )} + | +|
| Physical Input Bytes/s | +
+
+
+
+ Loading ...
+
+ |
+
| + {formatDataSize( + this.state.physicalInputRate[ + this.state.physicalInputRate.length - 1 + ] + )} + | +|
| Memory Utilization | +
+
+
+
+ Loading ...
+
+ |
+
| + {formatDataSize( + this.state.reservedMemory[this.state.reservedMemory.length - 1] + )} + | +
| - {this.renderTab("query.html", "Overview")} - - {this.renderTab("plan.html", "Live Plan")} - - {this.renderTab("stage.html", "Stage Performance")} - - {this.renderTab("timeline.html", "Splits")} - - JSON - - {this.renderTab("references.html", "References")} - | -
| + {this.renderTab('query.html', 'Overview')} + + {this.renderTab('plan.html', 'Live Plan')} + + {this.renderTab('stage.html', 'Stage Performance')} + + {this.renderTab('timeline.html', 'Splits')} + + + JSON + + + {this.renderTab('references.html', 'References')} + | +
{QueryListItem.stripQueryTextWhitespace(query.queryTextPreview)}
+
+
+ {QueryListItem.stripQueryTextWhitespace(query.queryTextPreview)}
+
+
|
+ |
+
|
|
|
+ |
+
|
|
| - Output - | -- {formatCount(operator.outputPositions) + " rows (" + parseAndFormatDataSize(operator.outputDataSize) + ")"} - | -
| - Drivers - | -- {operator.totalDrivers} - | -
| - CPU Time - | -- {formatDuration(totalCpuTime)} - | -
| - Wall Time - | -- {formatDuration(totalWallTime)} - | -
| - Blocked - | -- {formatDuration(parseDuration(operator.blockedWall))} - | -
| - Input - | -- {formatCount(operator.inputPositions) + " rows (" + parseAndFormatDataSize(operator.inputDataSize) + ")"} - | -
| Output | ++ {formatCount(operator.outputPositions) + + ' rows (' + + parseAndFormatDataSize(operator.outputDataSize) + + ')'} + | +
| Drivers | +{operator.totalDrivers} | +
| CPU Time | +{formatDuration(totalCpuTime)} | +
| Wall Time | +{formatDuration(totalWallTime)} | +
| Blocked | +{formatDuration(parseDuration(operator.blockedWall))} | +
| Input | ++ {formatCount(operator.inputPositions) + + ' rows (' + + parseAndFormatDataSize(operator.inputDataSize) + + ')'} + | +
| - Input - | -- {formatCount(operator.inputPositions) + " rows (" + parseAndFormatDataSize(operator.inputDataSize) + ")"} - | -
| - Input Rate - | -- {formatCount(rowInputRate) + " rows/s (" + formatDataSize(byteInputRate) + "/s)"} - | -
| - Output - | -- {formatCount(operator.outputPositions) + " rows (" + parseAndFormatDataSize(operator.outputDataSize) + ")"} - | -
| - Output Rate - | -- {formatCount(rowOutputRate) + " rows/s (" + formatDataSize(byteOutputRate) + "/s)"} - | -
| Input | ++ {formatCount(operator.inputPositions) + + ' rows (' + + parseAndFormatDataSize(operator.inputDataSize) + + ')'} + | +
| Input Rate | ++ {formatCount(rowInputRate) + + ' rows/s (' + + formatDataSize(byteInputRate) + + '/s)'} + | +
| Output | ++ {formatCount(operator.outputPositions) + + ' rows (' + + parseAndFormatDataSize(operator.outputDataSize) + + ')'} + | +
| Output Rate | ++ {formatCount(rowOutputRate) + + ' rows/s (' + + formatDataSize(byteOutputRate) + + '/s)'} + | +
| - CPU Time - | -- {formatDuration(totalCpuTime)} - | -
| - Wall Time - | -- {formatDuration(totalWallTime)} - | -
| - Blocked - | -- {formatDuration(parseDuration(operator.blockedWall))} - | -
| - Drivers - | -- {operator.totalDrivers} - | -
| - Tasks - | -- {operatorTasks.length} - | -
| CPU Time | +{formatDuration(totalCpuTime)} | +
| Wall Time | +{formatDuration(totalWallTime)} | +
| Blocked | +{formatDuration(parseDuration(operator.blockedWall))} | +
| Drivers | +{operator.totalDrivers} | +
| Tasks | +{operatorTasks.length} | +
| Node ID | -Node IP | -Node Version | -Coordinator | -State | -
| Node ID | +Node IP | +Node Version | +Coordinator | +State | +
| - No queries using pool - | -
| No queries using pool | +
| - Node ID - | -- {serverInfo.nodeId} - - - - - | -
| - Heap Memory - | -- {formatDataSize(serverInfo.heapAvailable)} - | -
| - Processors - | -- {serverInfo.processors} - | -
| Node ID | ++ {serverInfo.nodeId} + + + + + | +
| Heap Memory | ++ + {formatDataSize(serverInfo.heapAvailable)} + + | +
| Processors | ++ {serverInfo.processors} + | +
| - Uptime - | -- {serverInfo.uptime} - | -
| - External Address - | -- {serverInfo.externalAddress} - - - - - | -
| - Internal Address - | -- {serverInfo.internalAddress} - - - - - | -
| Uptime | +{serverInfo.uptime} | +
| External Address | ++ {serverInfo.externalAddress} + + + + + | +
| Internal Address | ++ {serverInfo.internalAddress} + + + + + | +
| - Process CPU Utilization - | -
-
-
- Loading ...
- |
-
| - {formatCount(this.state.processCpuLoad[this.state.processCpuLoad.length - 1])}% - | -|
| - System CPU Utilization - | -
-
-
- Loading ...
- |
-
| - {formatCount(this.state.systemCpuLoad[this.state.systemCpuLoad.length - 1])}% - | -|
| Process CPU Utilization | +
+
+
+
+ Loading ...
+
+ |
+
| + {formatCount( + this.state.processCpuLoad[ + this.state.processCpuLoad.length - 1 + ] + )} + % + | +|
| System CPU Utilization | +
+
+
+
+ Loading ...
+
+ |
+
| + {formatCount( + this.state.systemCpuLoad[ + this.state.systemCpuLoad.length - 1 + ] + )} + % + | +
| - Heap Utilization - | -
-
-
- Loading ...
- |
-
| - {formatCount(this.state.heapPercentUsed[this.state.heapPercentUsed.length - 1])}% - | -|
| - Non-Heap Memory Used - | -
-
-
- Loading ...
- |
-
| - {formatDataSize(this.state.nonHeapUsed[this.state.nonHeapUsed.length - 1])} - | -|
| Heap Utilization | +
+
+
+
+ Loading ...
+
+ |
+
| + {formatCount( + this.state.heapPercentUsed[ + this.state.heapPercentUsed.length - 1 + ] + )} + % + | +|
| Non-Heap Memory Used | +
+
+
+
+ Loading ...
+
+ |
+
| + {formatDataSize( + this.state.nonHeapUsed[this.state.nonHeapUsed.length - 1] + )} + | +
| - Snapshot at {this.state.snapshotTime.toTimeString()} - - | -
- |
-
-
-
-
|
-
-
-
+ Snapshot at {this.state.snapshotTime.toTimeString()}
+
+ |
+
+ |
-
|
+
+
+
+
|
+
+
+
+
|
+
- {filteredThreads.map(t => this.renderThread(t))}
- );
+ {filteredThreads.map((t) => this.renderThread(t))}
}
- display = (
-