MCPcopy Create free account
hub / github.com/documentdb/documentdb / WriterSingleQual

Function WriterSingleQual

pg_documentdb/src/explain/documentdb_explain.c:411–510  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

409
410
411static void
412WriterSingleQual(pgbson_writer *writer, Expr *qual)
413{
414 List *args;
415 const MongoQueryOperator *operator = GetMongoQueryOperatorFromIndexOrRuntimeExpr(
416 (Node *) qual, &args);
417
418 if (list_length(args) != 2 || operator->operatorType == QUERY_OPERATOR_UNKNOWN)
419 {
420 /* Check if it's for the shard_key_value or object_id */
421 if (IsA(qual, OpExpr))
422 {
423 OpExpr *opExpr = (OpExpr *) qual;
424 if (IsA(linitial(opExpr->args), Var))
425 {
426 Var *firstVar = (Var *) linitial(opExpr->args);
427 if (firstVar->varno == INDEX_VAR &&
428 firstVar->varattno ==
429 DOCUMENT_DATA_TABLE_SHARD_KEY_VALUE_VAR_ATTR_NUMBER &&
430 firstVar->vartype == INT8OID)
431 {
432 return;
433 }
434 else if (firstVar->varno == INDEX_VAR &&
435 firstVar->varattno ==
436 DOCUMENT_DATA_TABLE_OBJECT_ID_VAR_ATTR_NUMBER &&
437 firstVar->vartype == BsonTypeId())
438 {
439 /* Object_Id qual - write as object_id filter */
440 Expr *secondArg = lsecond(opExpr->args);
441 if (IsA(secondArg, Const))
442 {
443 Const *secondConst = (Const *) secondArg;
444 pgbsonelement secondElement;
445 PgbsonToSinglePgbsonElementWithCollation(DatumGetPgBson(
446 secondConst->
447 constvalue),
448 &secondElement);
449
450 const char *operatorName = "$unknown";
451 if (opExpr->opno == BsonEqualOperatorId())
452 {
453 operatorName = "$eq";
454 }
455 else if (opExpr->opno == BsonLessThanOperatorId())
456 {
457 operatorName = "$lt";
458 }
459 else if (opExpr->opno == BsonLessThanEqualOperatorId())
460 {
461 operatorName = "$lte";
462 }
463 else if (opExpr->opno == BsonGreaterThanOperatorId())
464 {
465 operatorName = "$gt";
466 }
467 else if (opExpr->opno == BsonGreaterThanEqualOperatorId())
468 {

Callers 1

WriteQualsFunction · 0.85

Tested by

no test coverage detected