fix:datetime test pass by postgresql

This commit is contained in:
Hamed Masafi 2019-07-22 11:48:11 +04:30
parent d0249e778f
commit ad808afc6c
4 changed files with 48 additions and 21 deletions

View File

@ -341,24 +341,44 @@ QString PostgreSqlGenerator::createConditionalPhrase(const PhraseData *d) const
.arg(SqlGeneratorBase::createConditionalPhrase(d->left), .arg(SqlGeneratorBase::createConditionalPhrase(d->left),
escapeValue(d->operand)); escapeValue(d->operand));
} }
if (op == PhraseData::AddYears) switch (op) {
return QString("DATEADD(year, %1, %2)") case PhraseData::AddYears:
.arg(d->operand.toString(), createConditionalPhrase(d->left)); case PhraseData::AddYearsDateTime:
if (op == PhraseData::AddMonths) case PhraseData::AddMonths:
return QString("DATEADD(month, %1, %2)") case PhraseData::AddMonthsDateTime:
.arg(d->operand.toString(), createConditionalPhrase(d->left)); case PhraseData::AddDays:
if (op == PhraseData::AddDays) case PhraseData::AddDaysDateTime:
return QString("DATEADD(day, %1, %2)") case PhraseData::AddHours:
.arg(d->operand.toString(), createConditionalPhrase(d->left)); case PhraseData::AddHoursDateTime:
if (op == PhraseData::AddHours) case PhraseData::AddMinutes:
return QString("DATEADD(hour, %1, %2)") case PhraseData::AddMinutesDateTime:
.arg(d->operand.toString(), createConditionalPhrase(d->left)); case PhraseData::AddSeconds:
if (op == PhraseData::AddMinutes) case PhraseData::AddSecondsDateTime:
return QString("DATEADD(minute, %1, %2)") return QString("%1 + interval '%2 %3'")
.arg(d->operand.toString(), createConditionalPhrase(d->left)); .arg(createConditionalPhrase(d->left),
if (op == PhraseData::AddSeconds) d->operand.toString(),
return QString("DATEADD(second, %1, %2)") SqlGeneratorBase::dateTimePartName(op));
.arg(d->operand.toString(), createConditionalPhrase(d->left));
default:
break;
}
}
if (d->type == PhraseData::WithoutOperand) {
switch (op) {
case PhraseData::DatePartYear:
case PhraseData::DatePartMonth:
case PhraseData::DatePartDay:
case PhraseData::DatePartHour:
case PhraseData::DatePartMinute:
case PhraseData::DatePartSecond:
return QString("date_part('%2', %1)")
.arg(createConditionalPhrase(d->left),
SqlGeneratorBase::dateTimePartName(op));
default:
break;
}
} }
return SqlGeneratorBase::createConditionalPhrase(d); return SqlGeneratorBase::createConditionalPhrase(d);

View File

@ -788,21 +788,27 @@ void SqlGeneratorBase::removeTableNames(QString &command)
QString SqlGeneratorBase::dateTimePartName(const PhraseData::Condition &op) const QString SqlGeneratorBase::dateTimePartName(const PhraseData::Condition &op) const
{ {
switch (op) { switch (op) {
case PhraseData::DatePartYear:
case PhraseData::AddYears: case PhraseData::AddYears:
case PhraseData::AddYearsDateTime: case PhraseData::AddYearsDateTime:
return "YEAR"; return "YEAR";
case PhraseData::DatePartMonth:
case PhraseData::AddMonths: case PhraseData::AddMonths:
case PhraseData::AddMonthsDateTime: case PhraseData::AddMonthsDateTime:
return "MONTH"; return "MONTH";
case PhraseData::DatePartDay:
case PhraseData::AddDays: case PhraseData::AddDays:
case PhraseData::AddDaysDateTime: case PhraseData::AddDaysDateTime:
return "DAY"; return "DAY";
case PhraseData::DatePartHour:
case PhraseData::AddHours: case PhraseData::AddHours:
case PhraseData::AddHoursDateTime: case PhraseData::AddHoursDateTime:
return "HOUR"; return "HOUR";
case PhraseData::DatePartMinute:
case PhraseData::AddMinutes: case PhraseData::AddMinutes:
case PhraseData::AddMinutesDateTime: case PhraseData::AddMinutesDateTime:
return "MINUTE"; return "MINUTE";
case PhraseData::DatePartSecond:
case PhraseData::AddSeconds: case PhraseData::AddSeconds:
case PhraseData::AddSecondsDateTime: case PhraseData::AddSecondsDateTime:
return "SECOND"; return "SECOND";
@ -965,6 +971,7 @@ SqlGeneratorBase::operatorString(const PhraseData::Condition &cond) const
return "MOD"; return "MOD";
default: default:
qDebug() << "Unsupported" << cond;
return QString("<FAIL cond> %1").arg(cond); return QString("<FAIL cond> %1").arg(cond);
} }
} }

View File

@ -12,11 +12,11 @@
.arg(timer.elapsed() / 1000.) \ .arg(timer.elapsed() / 1000.) \
.arg(__func__) .arg(__func__)
#define DRIVER "QSQLITE" #define DRIVER "QPSQL"
#define DATABASE QString("nut_test_%1_db").arg(metaObject()->className()).toLower() #define DATABASE QString("nut_test_%1_db").arg(metaObject()->className()).toLower()
#define HOST "127.0.0.1" #define HOST "127.0.0.1"
#define USERNAME "postgres" #define USERNAME "postgres"
#define PASSWORD "856856" #define PASSWORD "mysecretpassword"
#ifdef Q_OS_LINUX #ifdef Q_OS_LINUX
# define OS "Linux" # define OS "Linux"

View File

@ -1,6 +1,6 @@
#include "test.h" #include "test.h"
Test::Test(QObject *parentTableSet) Test::Test(QObject *parentTableSet) : Table(parentTableSet)
{ {
} }