MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / extract_pk_equality

Function extract_pk_equality

nodedb-sql/src/optimizer/point_get.rs:40–75  ·  view source on GitHub ↗

Extract a simple equality filter on a known PK column.

(filter: &Filter)

Source from the content-addressed store, hash-verified

38
39/// Extract a simple equality filter on a known PK column.
40fn extract_pk_equality(filter: &Filter) -> Option<(String, SqlValue)> {
41 match &filter.expr {
42 FilterExpr::Comparison {
43 field,
44 op: CompareOp::Eq,
45 value,
46 } => {
47 // Only optimize for known PK columns.
48 let f = field.to_lowercase();
49 if f == "id" || f == "document_id" || f == "key" {
50 Some((f, value.clone()))
51 } else {
52 None
53 }
54 }
55 FilterExpr::Expr(SqlExpr::BinaryOp {
56 left,
57 op: BinaryOp::Eq,
58 right,
59 }) => {
60 let col = match left.as_ref() {
61 SqlExpr::Column { name, .. } => name.to_lowercase(),
62 _ => return None,
63 };
64 if col != "id" && col != "document_id" && col != "key" {
65 return None;
66 }
67 let val = match right.as_ref() {
68 SqlExpr::Literal(v) => v.clone(),
69 _ => return None,
70 };
71 Some((col, val))
72 }
73 _ => None,
74 }
75}

Callers 1

optimizeFunction · 0.85

Calls 2

cloneMethod · 0.45
as_refMethod · 0.45

Tested by

no test coverage detected