File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ const process = require('process');
4
4
5
5
const Pool = require ( './pool.js' ) ;
6
6
const PoolConfig = require ( './pool_config.js' ) ;
7
+ const Connection = require ( './connection.js' ) ;
7
8
const EventEmitter = require ( 'events' ) . EventEmitter ;
8
9
9
10
/**
@@ -46,6 +47,43 @@ class PoolNamespace {
46
47
} ) ;
47
48
}
48
49
50
+ /**
51
+ * pool cluster query
52
+ * @param {* } sql
53
+ * @param {* } values
54
+ * @param {* } cb
55
+ * @returns query
56
+ */
57
+ query ( sql , values , cb ) {
58
+ const clusterNode = this . _getClusterNode ( ) ;
59
+ const query = Connection . createQuery ( sql , values , cb , { } ) ;
60
+ if ( clusterNode === null ) {
61
+ return cb ( new Error ( 'Pool does Not exists.' ) ) ;
62
+ }
63
+ this . _cluster . _getConnection ( clusterNode , ( err , conn ) => {
64
+ if ( err ) {
65
+ if ( typeof query . onResult === 'function' ) {
66
+ query . onResult ( err ) ;
67
+ } else {
68
+ query . emit ( 'error' , err ) ;
69
+ }
70
+ return ;
71
+ }
72
+ if ( conn === 'retry' ) {
73
+ return this . query ( sql , values , cb ) ;
74
+ }
75
+ try {
76
+ conn . query ( query ) . once ( 'end' , ( ) => {
77
+ conn . release ( ) ;
78
+ } ) ;
79
+ } catch ( e ) {
80
+ conn . release ( ) ;
81
+ throw e ;
82
+ }
83
+ } ) ;
84
+ return query ;
85
+ }
86
+
49
87
_getClusterNode ( ) {
50
88
const foundNodeIds = this . _cluster . _findNodeIds ( this . _pattern ) ;
51
89
if ( foundNodeIds . length === 0 ) {
You can’t perform that action at this time.
0 commit comments