Changeset View
Changeset View
Standalone View
Standalone View
src/expression/KDbExpression.cpp
Show First 20 Lines • Show All 296 Lines • ▼ Show 20 Line(s) | 296 | { | |||
---|---|---|---|---|---|
297 | return d->expressionClass == KDb::UnknownExpression; | 297 | return d->expressionClass == KDb::UnknownExpression; | ||
298 | } | 298 | } | ||
299 | 299 | | |||
300 | KDbExpression KDbExpression::clone() const | 300 | KDbExpression KDbExpression::clone() const | ||
301 | { | 301 | { | ||
302 | return KDbExpression(d->clone()); | 302 | return KDbExpression(d->clone()); | ||
303 | } | 303 | } | ||
304 | 304 | | |||
305 | KDbExpression KDbExpression::resolveQuotedIdentifiers(KDbParseInfo *parseInfo) | ||||
306 | { | ||||
307 | if (!isQueryParameter()) { | ||||
308 | foreach(ExplicitlySharedExpressionDataPointer data, d->children) { | ||||
309 | KDbExpression child(data); | ||||
310 | child.resolveQuotedIdentifiers(parseInfo); | ||||
311 | } | ||||
312 | return *this; | ||||
313 | } | ||||
314 | const KDbQueryParameterExpression queryParam = toQueryParameter(); | ||||
315 | QString value = queryParam.value().toString(); | ||||
316 | if (value == QStringLiteral("*")) { | ||||
317 | // The start would pass the validation for KDbVariableExpression, | ||||
318 | // but within a quoted identifier it is always a query parameter. | ||||
319 | return *this; | ||||
320 | } | ||||
321 | KDbVariableExpression possibleColumn (value); | ||||
322 | if (!possibleColumn.validate(parseInfo)) { | ||||
323 | return *this; | ||||
324 | } | ||||
325 | kdbDebug() << "replace" << queryParam << "for" << possibleColumn; | ||||
326 | if (queryParam.d->parent) { | ||||
327 | KDbExpression parent(queryParam.d->parent); | ||||
328 | int index = parent.indexOfChild(queryParam); | ||||
329 | parent.removeChild(index); | ||||
330 | parent.insertChild(index, possibleColumn); | ||||
331 | } | ||||
332 | return possibleColumn; | ||||
333 | } | ||||
334 | | ||||
305 | KDbToken KDbExpression::token() const | 335 | KDbToken KDbExpression::token() const | ||
306 | { | 336 | { | ||
307 | return d->token; | 337 | return d->token; | ||
308 | } | 338 | } | ||
309 | 339 | | |||
310 | void KDbExpression::setToken(KDbToken token) | 340 | void KDbExpression::setToken(KDbToken token) | ||
311 | { | 341 | { | ||
312 | d->token = token; | 342 | d->token = token; | ||
▲ Show 20 Lines • Show All 323 Lines • Show Last 20 Lines |