MCPcopy Create free account
hub / github.com/datastax/cql-proxy / TestParserSystemNowFunction

Function TestParserSystemNowFunction

parser/parser_test.go:186–238  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

184}
185
186func TestParserSystemNowFunction(t *testing.T) {
187 var tests = []struct {
188 query string
189 table string
190 }{
191 {"SELECT now() FROM system.local", "local"},
192 {"SELECT now() FROM system.peers", "peers"},
193 }
194
195 start, _, err := uuid.GetTime()
196 require.NoError(t, err)
197
198 for _, tt := range tests {
199 t.Run(tt.query, func(t *testing.T) {
200 handled, stmt, err := IsQueryHandled(IdentifierFromString(""), tt.query)
201 assert.NoError(t, err, tt.query)
202 assert.True(t, handled, tt.query)
203 require.NotNil(t, stmt)
204 if selectStmt, ok := stmt.(*SelectStatement); ok {
205 require.Len(t, selectStmt.Selectors, 1)
206 selector := selectStmt.Selectors[0]
207 require.NotNil(t, selector)
208 if nowSelector, ok := selector.(*NowFuncSelector); ok {
209 values, err := nowSelector.Values(nil, nil)
210 assert.NoError(t, err)
211 assert.Len(t, values, 1)
212
213 var u primitive.UUID
214 wasNull, err := datacodec.Timeuuid.Decode(values[0], &u, primitive.ProtocolVersion4)
215 assert.False(t, wasNull)
216 assert.NoError(t, err)
217
218 v, err := uuid.FromBytes(u[:])
219 assert.NoError(t, err)
220 assert.Equal(t, uuid.RFC4122, v.Variant())
221 assert.Equal(t, uuid.Version(1), v.Version())
222 assert.GreaterOrEqual(t, v.Time(), start)
223
224 columns, err := nowSelector.Columns(nil, selectStmt)
225 assert.NoError(t, err)
226 assert.Len(t, columns, 1)
227 assert.Equal(t, "system.now()", columns[0].Name)
228 assert.Equal(t, "system", columns[0].Keyspace)
229 assert.Equal(t, tt.table, columns[0].Table)
230 } else {
231 assert.Fail(t, "expected now function selector")
232 }
233 } else {
234 assert.Fail(t, "expected select statement")
235 }
236 })
237 }
238}

Callers

nothing calls this directly

Calls 5

IsQueryHandledFunction · 0.85
IdentifierFromStringFunction · 0.85
ValuesMethod · 0.65
ColumnsMethod · 0.65
DecodeMethod · 0.45

Tested by

no test coverage detected