@@ -10,9 +10,11 @@ export function logError(
10
10
err : any ,
11
11
query ?: string ,
12
12
parameters ?: CFXParameters ,
13
- includeParameters ?: boolean ,
13
+ includeParameters ?: boolean
14
14
) {
15
- const message = `${ invokingResource } was unable to execute a query!${ query ? `\n${ `Query: ${ query } ` } ` : '' } ${ includeParameters ? `\n${ JSON . stringify ( parameters ) } ` : '' } \n${ err . message } ` ;
15
+ const message = `${ invokingResource } was unable to execute a query!${ query ? `\n${ `Query: ${ query } ` } ` : '' } ${
16
+ includeParameters ? `\n${ JSON . stringify ( parameters ) } ` : ''
17
+ } \n${ err . message } `;
16
18
17
19
TriggerEvent ( 'oxmysql:error' , {
18
20
query : query ,
@@ -34,9 +36,13 @@ export const profilerStatements = [
34
36
'SET profiling = 1' ,
35
37
] ;
36
38
39
+ /**
40
+ * Executes MySQL queries to fetch accurate query profiling results when `mysql_debug` is enabled.
41
+ */
37
42
export async function runProfiler ( connection : PoolConnection , invokingResource : string ) {
38
- if ( ! mysql_debug && ! mysql_ui ) return ;
39
- if ( ! mysql_ui && mysql_debug && Array . isArray ( mysql_debug ) && ! mysql_debug . includes ( invokingResource ) ) return ;
43
+ if ( ! mysql_debug ) return ;
44
+
45
+ if ( Array . isArray ( mysql_debug ) && ! mysql_debug . includes ( invokingResource ) ) return ;
40
46
41
47
for ( const statement of profilerStatements ) await connection . query ( statement ) ;
42
48
@@ -62,12 +68,13 @@ export async function profileBatchStatements(
62
68
63
69
if ( typeof query === 'string' && parameters )
64
70
for ( let i = 0 ; i < profiler . length ; i ++ ) {
65
- logQuery ( invokingResource , query , profiler [ i ] . duration , parameters [ offset + i ] ) ;
71
+ logQuery ( invokingResource , query , parseFloat ( profiler [ i ] . duration ) , parameters [ offset + i ] ) ;
66
72
}
67
73
else if ( typeof query === 'object' )
68
74
for ( let i = 0 ; i < profiler . length ; i ++ ) {
69
75
const transaction = query [ offset + i ] ;
70
- if ( transaction ) logQuery ( invokingResource , transaction . query , profiler [ i ] . duration , transaction . params ) ;
76
+ if ( transaction )
77
+ logQuery ( invokingResource , transaction . query , parseFloat ( profiler [ i ] . duration ) , transaction . params ) ;
71
78
else break ;
72
79
}
73
80
}
@@ -86,17 +93,15 @@ const logStorage: QueryLog = {};
86
93
export const logQuery = (
87
94
invokingResource : string ,
88
95
query : string ,
89
- executionTime : string | number ,
96
+ executionTime : number ,
90
97
parameters ?: CFXParameters
91
98
) => {
92
- executionTime = parseFloat ( executionTime as string ) ;
93
-
94
99
if (
95
100
executionTime >= mysql_slow_query_warning ||
96
101
( mysql_debug && ( ! Array . isArray ( mysql_debug ) || mysql_debug . includes ( invokingResource ) ) )
97
102
) {
98
103
console . log (
99
- `${ dbVersion } ^3${ invokingResource } took ${ executionTime } ms to execute a query!\n${ query } ${
104
+ `${ dbVersion } ^3${ invokingResource } took ${ executionTime . toFixed ( 4 ) } ms to execute a query!\n${ query } ${
100
105
parameters ? ` ${ JSON . stringify ( parameters ) } ` : ''
101
106
} ^0`
102
107
) ;
0 commit comments