You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
:-Need(values.None? || BucketName !in values.value, E("If no buckets are configured, do not specify " + BucketName));
274
+
returnSuccess((values, 0));
295
275
}
296
276
297
277
var foo :-ExtractBucketNumber(values);
298
278
var (values2, bucket) := foo;
299
279
if bucket.Some? {
300
280
:-Need(bucket.value < search.numBuckets as uint32, E(BucketName + " specified in FilterExpression was " + String.Base10Int2String(bucket.value as int) + " must be less than the number of buckets: " + String.Base10Int2String(search.numBuckets as int)));
301
281
var nBucket := (bucket.value asnat) as BucketNumber;
302
-
303
-
var bar :-ExtractBucketQueries(values2);
304
-
var (values3, queries) := bar;
305
-
if queries.Some? {
306
-
:-Need(0 < queries.value <= search.numBuckets as uint32, E(BucketQueriesName + " specified in FilterExpression was " + String.Base10Int2String(queries.value as int) + " must be greater than zero and less than or equal to the number of buckets: " + String.Base10Int2String(search.numBuckets as int)));
307
-
:-Need(bucket.value < queries.value, E(BucketName + " value of " + String.Base10Int2String(bucket.value as int) + " should have been less than the " + BucketQueriesName + " value of " + String.Base10Int2String(queries.value as int)));
308
-
var nQueries := (queries.value asnat) as BucketCount;
// No bucket specified is OK if no encrypted fields are searched
318
286
var filterHasEncField := Filter.UsesEncryptedField(Filter.ParseExprOpt(filterExpr), actions, names);
319
287
var keyHasEncField := Filter.UsesEncryptedField(Filter.ParseExprOpt(keyExpr), actions, names);
320
288
if keyHasEncField.Some? || filterHasEncField.Some? {
321
-
returnFailure(E("When numberOfBuckets is greater than one, FilterExpression must start with 'aws_dbe_bucket = NN && '"));
289
+
returnFailure(E("When numberOfBuckets is greater than one, XXXValues must contain " + BucketName));
322
290
} else {
323
-
returnSuccess((values, 0, None));
291
+
returnSuccess((values, 0));
324
292
}
325
293
}
326
294
@@ -341,18 +309,13 @@ module DynamoDBSupport {
341
309
var keyId :- Filter.GetBeaconKeyId(search.value.curr(), req.KeyConditionExpression, req.FilterExpression, req.ExpressionAttributeValues, req.ExpressionAttributeNames);
342
310
343
311
var foo :-ExtractBucket(search.value.curr(), req.FilterExpression, req.KeyConditionExpression, req.ExpressionAttributeNames, req.ExpressionAttributeValues, actions);
344
-
var (newValues, bucket, bucket_queries) := foo;
312
+
var (newValues, bucket) := foo;
345
313
var numQueries :- Filter.GetNumQueries(actions, req.KeyConditionExpression, req.ExpressionAttributeNames, search.value.curr());
346
-
if numQueries < bucket {
314
+
if numQueries <= bucket {
347
315
returnFailure(E("Bucket number was " + String.Base10Int2String(bucket as int) + " but should have been less than number of queries : " + String.Base10Int2String(numQueries as int)));
348
316
}
349
-
if bucket_queries.Some? {
350
-
if numQueries != bucket_queries.value {
351
-
returnFailure(E("Number of queries was " + String.Base10Int2String(numQueries as int) + " but should have been " + String.Base10Int2String(bucket_queries.value as int)));
352
-
}
353
-
}
354
317
var oldContext := Filter.ExprContext(req.KeyConditionExpression, req.FilterExpression, newValues, req.ExpressionAttributeNames);
355
-
var newContext :- Filter.DoBeaconize(search.value.curr(), oldContext, keyId, bucket, bucket_queries);
318
+
var newContext :- Filter.DoBeaconize(search.value.curr(), oldContext, keyId, bucket, numQueries);
356
319
returnSuccess(req.(
357
320
KeyConditionExpression := newContext.keyExpr,
358
321
FilterExpression := newContext.filterExpr,
@@ -424,9 +387,7 @@ module DynamoDBSupport {
424
387
var keyId :- Filter.GetBeaconKeyId(search.value.curr(), None, req.FilterExpression, req.ExpressionAttributeValues, req.ExpressionAttributeNames);
425
388
var _ :-TestBucketForScan(req.ExpressionAttributeValues);
426
389
var context := Filter.ExprContext(None, req.FilterExpression, req.ExpressionAttributeValues, req.ExpressionAttributeNames);
427
-
// For Scan, we always treat it as {:aws_dbe_bucket := 0, :aws_dbe_bucket_queries := 1}
428
-
var numQueries :=if search.value.curr().numBuckets == 1 then None elseSome(1);
429
-
var newContext :- Filter.DoBeaconize(search.value.curr(), context, keyId, 0, Some(1));
390
+
var newContext :- Filter.DoBeaconize(search.value.curr(), context, keyId, 0, 1);
0 commit comments