MCPcopy Create free account
hub / github.com/apache/cassandra-nodejs-driver / writeQueryParameters

Method writeQueryParameters

lib/requests.js:170–239  ·  view source on GitHub ↗

* Writes v1 and v2 execute query parameters * @param {FrameWriter} frameWriter * @param {Encoder} encoder * @param {Boolean} [isQuery] True if query, otherwise assumed to be execute request.

(frameWriter, encoder, isQuery)

Source from the content-addressed store, hash-verified

168 * @param {Boolean} [isQuery] True if query, otherwise assumed to be execute request.
169 */
170 writeQueryParameters(frameWriter, encoder, isQuery) {
171 //v1: <n><value_1>....<value_n><consistency>
172 //v2: <consistency><flags>[<n><value_1>...<value_n>][<result_page_size>][<paging_state>][<serial_consistency>]
173 //v3: <consistency><flags>[<n>[name_1]<value_1>...[name_n]<value_n>][<result_page_size>][<paging_state>][<serial_consistency>][<timestamp>]
174 //dse_v1: <consistency><flags>[<n>[name_1]<value_1>...[name_n]<value_n>][<result_page_size>][<paging_state>]
175 // [<serial_consistency>][<timestamp>][continuous_paging_options]
176 //dse_v2: <consistency><flags>[<n>[name_1]<value_1>...[name_n]<value_n>][<result_page_size>][<paging_state>]
177 // [<serial_consistency>][<timestamp>][keyspace][continuous_paging_options]
178 let flags = 0;
179
180 const timestamp = this.timestamp;
181
182 if (types.protocolVersion.supportsPaging(encoder.protocolVersion)) {
183 flags |= (this.params && this.params.length) ? queryFlag.values : 0;
184 flags |= (this.options.getFetchSize() > 0) ? queryFlag.pageSize : 0;
185 flags |= this.options.getPageState() ? queryFlag.withPagingState : 0;
186 flags |= this.options.getSerialConsistency() ? queryFlag.withSerialConsistency : 0;
187 flags |= timestamp !== null && timestamp !== undefined ? queryFlag.withDefaultTimestamp : 0;
188 flags |= this.namedParameters ? queryFlag.withNameForValues : 0;
189
190 // Don't inject keyspace for EXECUTE requests as inherited from prepared statement.
191 const supportsKeyspace = isQuery && types.protocolVersion.supportsKeyspaceInRequest(encoder.protocolVersion);
192 flags |= supportsKeyspace && this.options.getKeyspace() ? queryFlag.withKeyspace : 0;
193
194 frameWriter.writeShort(this.consistency);
195 if (types.protocolVersion.uses4BytesQueryFlags(encoder.protocolVersion)) {
196 frameWriter.writeInt(flags);
197 }
198 else {
199 frameWriter.writeByte(flags);
200 }
201 }
202
203 if (this.params && this.params.length) {
204 frameWriter.writeShort(this.params.length);
205 for (let i = 0; i < this.params.length; i++) {
206 let paramValue = this.params[i];
207 if (flags & queryFlag.withNameForValues) {
208 //parameter is composed by name / value
209 frameWriter.writeString(paramValue.name);
210 paramValue = paramValue.value;
211 }
212 frameWriter.writeBytes(encoder.encode(paramValue, this.getParamType(i)));
213 }
214 }
215
216 if (!types.protocolVersion.supportsPaging(encoder.protocolVersion)) {
217 if (!this.params || !this.params.length) {
218 //zero parameters
219 frameWriter.writeShort(0);
220 }
221 frameWriter.writeShort(this.consistency);
222 return;
223 }
224 if (flags & queryFlag.pageSize) {
225 frameWriter.writeInt(this.options.getFetchSize());
226 }
227 if (flags & queryFlag.withPagingState) {

Callers 2

writeMethod · 0.95
writeMethod · 0.80

Calls 11

getParamTypeMethod · 0.95
writeShortMethod · 0.80
writeIntMethod · 0.80
writeByteMethod · 0.80
writeStringMethod · 0.80
writeBytesMethod · 0.80
writeLongMethod · 0.80
getFetchSizeMethod · 0.65
getPageStateMethod · 0.65
getSerialConsistencyMethod · 0.65
getKeyspaceMethod · 0.65

Tested by

no test coverage detected