MCPcopy Create free account
hub / github.com/CovenantSQL/CovenantSQL / sendQuery

Method sendQuery

cmd/cql-proxy/storage/impersonate.go:134–196  ·  view source on GitHub ↗
(query string, args []driver.NamedValue, queryType types.QueryType)

Source from the content-addressed store, hash-verified

132}
133
134func (d *impersonatedDB) sendQuery(query string, args []driver.NamedValue, queryType types.QueryType) (
135 resp *types.Response, err error) {
136 var (
137 connID, seqNo = allocateConnAndSeq()
138 dArgs []types.NamedArg
139 )
140
141 defer putBackConn(connID)
142
143 for _, arg := range args {
144 dArgs = append(dArgs, types.NamedArg{
145 Name: arg.Name,
146 Value: arg.Value,
147 })
148 }
149
150 req := &types.Request{
151 Header: types.SignedRequestHeader{
152 RequestHeader: types.RequestHeader{
153 QueryType: queryType,
154 NodeID: d.nodeID,
155 DatabaseID: d.db,
156 ConnectionID: connID,
157 SeqNo: seqNo,
158 Timestamp: time.Now().UTC(),
159 },
160 },
161 Payload: types.RequestPayload{
162 Queries: []types.Query{
163 {
164 Pattern: query,
165 Args: dArgs,
166 },
167 },
168 },
169 }
170 resp = &types.Response{}
171
172 if err = req.Sign(d.key); err != nil {
173 err = errors.Wrapf(err, "sign query failed")
174 return
175 }
176
177 err = d.rpc.Call(route.DBSQuery.String(), req, resp)
178 if err != nil {
179 err = errors.Wrapf(err, "send query rpc failed")
180 return
181 }
182
183 // add ack
184 go d.sendAck(&types.Ack{
185 Header: types.SignedAckHeader{
186 AckHeader: types.AckHeader{
187 Response: resp.Header.ResponseHeader,
188 ResponseHash: resp.Header.Hash(),
189 NodeID: d.nodeID,
190 Timestamp: time.Now().UTC(),
191 },

Callers 2

ExecContextMethod · 0.95
QueryContextMethod · 0.95

Calls 7

SignMethod · 0.95
sendAckMethod · 0.95
allocateConnAndSeqFunction · 0.70
putBackConnFunction · 0.70
CallMethod · 0.65
HashMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected