feat(oceanbase-oracle): split execution time from client wait
This commit is contained in:
1 parent
1294708eea
commit
33afb0b432
58 files changed
+843
-11
No files matched your search
@@ -146,6 +146,28 @@ describe("drawCanvasDataGrid with frozen columns", () => {
|
||||
expect(resolveCanvasBackingStoreMetrics({ width: 801, height: 399, pixelRatio: 5 })).toEqual({ pixelWidth: 3204, pixelHeight: 1596, scaleX: 4, scaleY: 4, measured: false });
|
||||
});
|
||||
|
||||
it("reports a completed draw only after obtaining a Canvas context", () => {
|
||||
const canvas = createMockCanvas();
|
||||
const options = createBaseOptions({ canvas, rowCount: 0, rowAt: () => undefined });
|
||||
const fillRect = vi.fn();
|
||||
vi.spyOn(canvas, "getContext")
|
||||
.mockReturnValueOnce(null)
|
||||
.mockReturnValueOnce(
|
||||
new Proxy(
|
||||
{},
|
||||
{
|
||||
get: (_target, key) => (key === "fillRect" ? fillRect : key === "measureText" ? () => ({ width: 0 }) : () => {}),
|
||||
set: () => true,
|
||||
},
|
||||
) as unknown as CanvasRenderingContext2D,
|
||||
);
|
||||
|
||||
expect(drawCanvasDataGrid(options)).toBe(false);
|
||||
expect(fillRect).not.toHaveBeenCalled();
|
||||
expect(drawCanvasDataGrid(options)).toBe(true);
|
||||
expect(fillRect).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("draws without errors when frozenColumnCount is 0", () => {
|
||||
const canvas = createMockCanvas();
|
||||
const options = createBaseOptions({ canvas, frozenColumnCount: 0 });
|
||||
|
||||
@@ -81,6 +81,8 @@ describe("tab result cache statement execution metadata", () => {
|
||||
rows: [[1]],
|
||||
affected_rows: 0,
|
||||
execution_time_ms: 1,
|
||||
server_execute_time_us: 370,
|
||||
client_request_wait_ms: 45,
|
||||
statement_index: 0,
|
||||
sourceStatement: "SELECT 1",
|
||||
},
|
||||
@@ -101,6 +103,7 @@ describe("tab result cache statement execution metadata", () => {
|
||||
const restored = decodeTabResultSnapshot(encoded);
|
||||
|
||||
expect(restored?.resultEditorFingerprint).toBe("15:0123456789abcdef");
|
||||
expect(restored?.results?.[0]).toMatchObject({ server_execute_time_us: 370, client_request_wait_ms: 45 });
|
||||
expect(restored?.results?.map((result) => ({ statementIndex: result.statement_index, error: result.execution_error }))).toEqual([
|
||||
{ statementIndex: 0, error: undefined },
|
||||
{ statementIndex: 1, error: true },
|
||||
|
||||
@@ -324,7 +324,7 @@ function resolveCanvasRenderState(canvas: HTMLCanvasElement, isDark: boolean, st
|
||||
return state;
|
||||
}
|
||||
|
||||
export function drawCanvasDataGrid(options: DrawCanvasDataGridOptions) {
|
||||
export function drawCanvasDataGrid(options: DrawCanvasDataGridOptions): boolean {
|
||||
const {
|
||||
canvas,
|
||||
scroller,
|
||||
@@ -387,7 +387,7 @@ export function drawCanvasDataGrid(options: DrawCanvasDataGridOptions) {
|
||||
if (canvas.style.height !== canvasHeight) canvas.style.height = canvasHeight;
|
||||
|
||||
const ctx = canvas.getContext("2d");
|
||||
if (!ctx) return;
|
||||
if (!ctx) return false;
|
||||
ctx.setTransform(scaleX, 0, 0, scaleY, 0, 0);
|
||||
ctx.imageSmoothingEnabled = false;
|
||||
ctx.clearRect(0, 0, width, height);
|
||||
@@ -742,4 +742,5 @@ export function drawCanvasDataGrid(options: DrawCanvasDataGridOptions) {
|
||||
}
|
||||
ctx.restore();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -69,6 +69,8 @@ interface ColumnarQueryResult {
|
||||
mongo_copy_documents?: unknown[];
|
||||
affected_rows: number;
|
||||
execution_time_ms: number;
|
||||
server_execute_time_us?: number;
|
||||
client_request_wait_ms?: number;
|
||||
truncated?: boolean;
|
||||
has_more?: boolean;
|
||||
sourceLabel?: string;
|
||||
@@ -355,6 +357,8 @@ function stripSessionIds(result: QueryResult | undefined): QueryResult | undefin
|
||||
mongo_copy_documents: result.mongo_copy_documents ? clonePlain(result.mongo_copy_documents) : undefined,
|
||||
affected_rows: result.affected_rows,
|
||||
execution_time_ms: result.execution_time_ms,
|
||||
server_execute_time_us: result.server_execute_time_us,
|
||||
client_request_wait_ms: result.client_request_wait_ms,
|
||||
truncated: result.truncated,
|
||||
session_id: undefined,
|
||||
has_more: result.has_more,
|
||||
@@ -400,6 +404,8 @@ function toColumnarResult(result: QueryResult | undefined): ColumnarQueryResult
|
||||
mongo_copy_documents: result.mongo_copy_documents ? clonePlain(result.mongo_copy_documents) : undefined,
|
||||
affected_rows: result.affected_rows,
|
||||
execution_time_ms: result.execution_time_ms,
|
||||
server_execute_time_us: result.server_execute_time_us,
|
||||
client_request_wait_ms: result.client_request_wait_ms,
|
||||
truncated: result.truncated,
|
||||
has_more: result.has_more,
|
||||
sourceLabel: result.sourceLabel,
|
||||
@@ -426,6 +432,8 @@ function fromColumnarResult(result: ColumnarQueryResult | undefined): QueryResul
|
||||
mongo_copy_documents: result.mongo_copy_documents ? clonePlain(result.mongo_copy_documents) : undefined,
|
||||
affected_rows: result.affected_rows,
|
||||
execution_time_ms: result.execution_time_ms,
|
||||
server_execute_time_us: result.server_execute_time_us,
|
||||
client_request_wait_ms: result.client_request_wait_ms,
|
||||
truncated: result.truncated,
|
||||
session_id: undefined,
|
||||
has_more: result.has_more,
|
||||
|
||||
Reference in new issue
Block a user