@@ -596,8 +596,9 @@ Builder &Builder::orWhereColumn(const QVector<WhereColumnItem> &values)
596596Builder &Builder::whereColumn (const Column &first, const QString &comparison,
597597 const Column &second, const QString &condition)
598598{
599- // Compile check for a invalid comparison operator
600- invalidOperator (comparison);
599+ #ifdef TINYORM_DEBUG
600+ throwIfInvalidOperator (comparison);
601+ #endif
601602
602603 m_wheres.append ({.column = first, .comparison = comparison, .condition = condition,
603604 .type = WhereType::COLUMN, .columnTwo = second});
@@ -980,8 +981,9 @@ Builder &Builder::groupByRaw(const QString &sql, const QVector<QVariant> &bindin
980981Builder &Builder::having (const Column &column, const QString &comparison,
981982 const QVariant &value, const QString &condition)
982983{
983- // Compile check for a invalid comparison operator
984- invalidOperator (comparison);
984+ #ifdef TINYORM_DEBUG
985+ throwIfInvalidOperator (comparison);
986+ #endif
985987
986988 m_havings.append ({column, value, comparison, condition, HavingType::BASIC});
987989
@@ -1433,12 +1435,19 @@ QString Builder::stripTableForPluck(const QString &column) const
14331435
14341436/* protected */
14351437
1436- bool Builder::invalidOperator (const QString &comparison) const
1438+ void Builder::throwIfInvalidOperator (const QString &comparison) const
14371439{
14381440 const auto comparison_ = comparison.toLower ();
14391441
1440- return !getOperators ().contains (comparison_) &&
1441- !m_grammar.getOperators ().contains (comparison_);
1442+ if (getOperators ().contains (comparison_) ||
1443+ m_grammar.getOperators ().contains (comparison_)
1444+ )
1445+ return ;
1446+
1447+ throw Exceptions::InvalidArgumentError (
1448+ QStringLiteral (" The '%1' operator is not valid for the '%2' database "
1449+ " in %3()." )
1450+ .arg (comparison_, getConnection ().driverNamePrintable (), __tiny_func__));
14421451}
14431452
14441453QVector<QVariant> Builder::cleanBindings (const QVector<QVariant> &bindings) const
@@ -1719,7 +1728,9 @@ Builder &Builder::whereInternal(
17191728 const Column &column, const QString &comparison, QVariant value,
17201729 const QString &condition, const WhereType type)
17211730{
1722- invalidOperator (comparison);
1731+ #ifdef TINYORM_DEBUG
1732+ throwIfInvalidOperator (comparison);
1733+ #endif
17231734
17241735 m_wheres.append ({.column = column, .value = value, .comparison = comparison,
17251736 .condition = condition, .type = type});
0 commit comments