Skip to content

Commit

Permalink
refactor(patch/named-placeholders): performance tweaks
Browse files Browse the repository at this point in the history
Little bit of micro-optimisation to increase speed of placeholder resolution by 2x
  • Loading branch information
thelindat committed Dec 10, 2021
1 parent 193da3e commit 78ce45f
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 14 deletions.
2 changes: 1 addition & 1 deletion lua/fxmanifest.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ game 'common'

name 'oxmysql'
description 'Database wrapper for FiveM utilising node-mysql2 offering improved performance and security.'
version '1.8.5'
version '1.8.6'
url 'https://github.com/overextended/oxmysql'
author 'overextended'
use_fxv2_oal 'yes'
Expand Down
28 changes: 15 additions & 13 deletions patches/named-placeholders+1.1.2.patch
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
diff --git a/node_modules/named-placeholders/index.js b/node_modules/named-placeholders/index.js
index 527d723..f63ce28 100644
index 527d723..728188b 100644
--- a/node_modules/named-placeholders/index.js
+++ b/node_modules/named-placeholders/index.js
@@ -3,7 +3,7 @@
Expand All @@ -11,46 +11,48 @@ index 527d723..f63ce28 100644
DQUOTE = 34,
SQUOTE = 39,
BSLASH = 92;
@@ -94,15 +94,22 @@ function createCompiler(config) {
@@ -94,6 +94,14 @@ function createCompiler(config) {
if (typeof params == 'undefined')
throw new Error('Named query contains placeholders, but parameters object is undefined');

+ for(const key in params) {
+ if(key.charAt(0) === '@' || key.charAt(0) === ':') {
+ const char = key[0]
+ if(char == '@' || char == ':') {
+ params[key.substring(1)] = params[key];
+ delete params[key];
+ }
+ }
+
+
const tokens = tree[1];
for (let i=0; i < tokens.length; ++i) {
- arr.push(params[tokens[i]]);
+ arr.push(params[tokens[i]] === undefined ? null : params[tokens[i]]);
}
return [tree[0], arr];
arr.push(params[tokens[i]]);
@@ -102,7 +110,8 @@ function createCompiler(config) {
}

function noTailingSemicolon(s) {
- if (s.slice(-1) == ':') {
+ if (s.slice(-1) == ':' || s.slice(-1) == '@') {
+ const char = s.slice(-1)
+ if (char == ':' || char == '@') {
return s.slice(0, -1);
}
return s;
@@ -115,7 +122,7 @@ function createCompiler(config) {
@@ -115,7 +124,8 @@ function createCompiler(config) {

let unnamed = noTailingSemicolon(tree[0][0]);
for (let i=1; i < tree[0].length; ++i) {
- if (tree[0][i-1].slice(-1) == ':') {
+ if (tree[0][i-1].slice(-1) == ':' || tree[0][i-1].slice(-1) == '@') {
+ const char = tree[0][i-1].slice(-1)
+ if (char == ':' || char == '@') {
unnamed += config.placeholder;
}
unnamed += config.placeholder;
@@ -124,7 +131,7 @@ function createCompiler(config) {
@@ -124,7 +134,8 @@ function createCompiler(config) {

const last = tree[0][tree[0].length -1];
if (tree[0].length == tree[1].length) {
- if (last.slice(-1) == ':') {
+ if (last.slice(-1) == ':' || last.slice(-1) == '@') {
+ const char = last.slice(-1)
+ if (char == ':' || char == '@') {
unnamed += config.placeholder;
}
unnamed += config.placeholder;

0 comments on commit 78ce45f

Please sign in to comment.