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),
escapeValue(d->operand));
}
if (op == PhraseData::AddYears)
return QString("DATEADD(year, %1, %2)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
if (op == PhraseData::AddMonths)
return QString("DATEADD(month, %1, %2)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
if (op == PhraseData::AddDays)
return QString("DATEADD(day, %1, %2)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
if (op == PhraseData::AddHours)
return QString("DATEADD(hour, %1, %2)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
if (op == PhraseData::AddMinutes)
return QString("DATEADD(minute, %1, %2)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
if (op == PhraseData::AddSeconds)
return QString("DATEADD(second, %1, %2)")
.arg(d->operand.toString(), createConditionalPhrase(d->left));
switch (op) {
case PhraseData::AddYears:
case PhraseData::AddYearsDateTime:
case PhraseData::AddMonths:
case PhraseData::AddMonthsDateTime:
case PhraseData::AddDays:
case PhraseData::AddDaysDateTime:
case PhraseData::AddHours:
case PhraseData::AddHoursDateTime:
case PhraseData::AddMinutes:
case PhraseData::AddMinutesDateTime:
case PhraseData::AddSeconds:
case PhraseData::AddSecondsDateTime:
return QString("%1 + interval '%2 %3'")
.arg(createConditionalPhrase(d->left),
d->operand.toString(),
SqlGeneratorBase::dateTimePartName(op));
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);

View File

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

View File

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

View File

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