MCPcopy Create free account
hub / github.com/erans/pgsqlite / can_use_read_only_optimization

Method can_use_read_only_optimization

src/optimization/read_only_optimizer.rs:149–180  ·  view source on GitHub ↗

Check if a query can use read-only optimization

(&self, query: &str)

Source from the content-addressed store, hash-verified

147
148 /// Check if a query can use read-only optimization
149 fn can_use_read_only_optimization(&self, query: &str) -> bool {
150 let query_upper = query.to_uppercase();
151
152 // Must be a SELECT query
153 if !query_upper.trim().starts_with("SELECT") {
154 return false;
155 }
156
157 // Exclude complex queries that need full processing
158 if query_upper.contains("JOIN") ||
159 query_upper.contains("UNION") ||
160 query_upper.contains("SUBQUERY") ||
161 query_upper.contains("WITH") ||
162 query_upper.contains("CASE") ||
163 query_upper.contains("WINDOW") ||
164 query_upper.contains("RECURSIVE") {
165 return false;
166 }
167
168 // Exclude queries with functions that might need translation
169 if query_upper.contains("NOW()") ||
170 query_upper.contains("CURRENT_TIMESTAMP") ||
171 query_upper.contains("CURRENT_DATE") ||
172 query_upper.contains("CURRENT_TIME") ||
173 query_upper.contains("::") || // Type casts
174 query_upper.contains("EXTRACT") ||
175 query_upper.contains("DATE_TRUNC") {
176 return false;
177 }
178
179 true
180 }
181
182 /// Generate a normalized cache key for the query
183 fn generate_cache_key(&self, query: &str) -> String {

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected