Lines 97-137javascript
97 rowsRemovedByIndexRecheck: toCount(raw["Rows Removed by Index Recheck"]),
98 sharedHitBlocks: toCount(raw["Shared Hit Blocks"]),
99 sharedReadBlocks: toCount(raw["Shared Read Blocks"]),
100 isLeaf: !Array.isArray(children)
103function* flattenPlan(node) {
104 if (!isDriverObject(node)) return;
105 yield decodePlanNode(node);
106 const children = node.Plans;
107 if (Array.isArray(children)) for (const child of children) yield* flattenPlan(child);
109function parseExplainResponse(result) {
110 const response = asDriverObject(result);
111 const rows = response === void 0 ? result : response.rows;
112 if (!Array.isArray(rows) || rows.length === 0) return;
113 const firstRow = rows[0];
114 if (!isDriverObject(firstRow)) return;
115 const column = Object.values(firstRow)[0];
118 decoded = typeof column === "string" ? JSON.parse(column) : column;
119 } catch {
LowWeak Crypto
Package source references weak cryptographic algorithms.
dist/drizzle-BPYatG7J.jsView on unpkg · L117 122 const envelope = Array.isArray(decoded) ? decoded[0] : decoded;
123 if (!isDriverObject(envelope)) return;
124 const nodes = [...flattenPlan(envelope.Plan)];
125 if (nodes.length === 0) return;
128 executionMs: toOptionalNumber(envelope["Execution Time"])
132//#region src/drizzle/index.ts
133const SEMATTRS_DB_PLAN_NODE = "db.plan.node";
134const SEMATTRS_DB_PLAN_INDEXES = "db.plan.indexes";
135const SEMATTRS_DB_PLAN_COST = "db.plan.cost";
136const SEMATTRS_DB_PLAN_ROWS_ESTIMATED = "db.plan.rows_estimated";
137const SEMATTRS_DB_PLAN_ROWS_EXAMINED = "db.plan.rows_examined";