aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/windows
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2014-12-14 08:24:32 -0500
committerLibravatarUnit 193 <unit193@ubuntu.com>2014-12-14 08:24:32 -0500
commite571839e140139a6a819077e94cf8cc01c13b29f (patch)
tree8263635257cfb5ed979a584a958103b700bf31e7 /SQLiteStudio3/guiSQLiteStudio/windows
parent407eac41f46936e3f346bb5a964a682e578b4237 (diff)
parent89214766d8e3e7b8dd749a1fa18a5b9727f5010d (diff)
Merge tag 'upstream/3.0.0'
Upstream version 3.0.0 # gpg: Signature made Sun 14 Dec 2014 08:24:31 AM EST using RSA key ID EBE9BD91 # gpg: Good signature from "Unit 193 <unit193@gmail.com>" # gpg: aka "Unit 193 <unit193@ninthfloor.org>" # gpg: aka "Unit 193 <unit193@ubuntu.com>"
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/windows')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp27
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h1
2 files changed, 23 insertions, 5 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
index d54a359..a37f387 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
@@ -19,6 +19,7 @@
#include "dialogs/ddlpreviewdialog.h"
#include "uiconfig.h"
#include "services/config.h"
+#include "services/codeformatter.h"
#include <QPushButton>
#include <QProgressBar>
#include <QDebug>
@@ -407,6 +408,12 @@ void ViewWindow::applyInitialTab()
ui->tabWidget->setCurrentIndex(0);
}
+QString ViewWindow::getCurrentDdl() const
+{
+ static_qstring(ddlTpl, "CREATE VIEW %1 AS %2");
+ return ddlTpl.arg(wrapObjIfNeeded(ui->nameEdit->text(), db->getDialect())).arg(ui->queryEdit->toPlainText());
+}
+
void ViewWindow::addTrigger()
{
DbObjectDialogs dialogs(db, this);
@@ -653,13 +660,14 @@ void ViewWindow::parseDdl()
createView->dialect = db->getDialect();
}
originalCreateView = SqliteCreateViewPtr::create(*createView);
- originalQuery = originalCreateView->select->detokenize();
+
+ // Replacing \r\n with \n, cause \r\n can be carried over from version 2.x.x, which did this incorrectly.
+ originalQuery = originalCreateView->select->detokenize().replace("\r\n", "\n");
}
void ViewWindow::updateDdlTab()
{
- QString ddl = "CREATE VIEW %1 AS %2";
- ui->ddlEdit->setPlainText(ddl.arg(wrapObjIfNeeded(ui->nameEdit->text(), db->getDialect())).arg(ui->queryEdit->toPlainText()));
+ ui->ddlEdit->setPlainText(FORMATTER->format("sql", getCurrentDdl(), db));
}
bool ViewWindow::isModified() const
@@ -711,13 +719,22 @@ void ViewWindow::executeStructureChanges()
QStringList sqls;
QList<bool> sqlMandatoryFlags;
- createView->rebuildTokens();
+ QString theDdl = getCurrentDdl();
if (!existingView)
{
- sqls << createView->detokenize();
+ sqls << theDdl;
}
else
{
+ Parser parser(db->getDialect());
+ if (!parser.parse(theDdl))
+ {
+ qCritical() << "Could not re-parse the view for executing it:" << parser.getErrorString();
+ notifyError(tr("The view code could not be parsed properly for execution. This is a SQLiteStudio's bug. Please report it."));
+ return;
+ }
+
+ createView = parser.getQueries().first().dynamicCast<SqliteCreateView>();
if (viewModifier)
delete viewModifier;
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h
index 6b50135..62e1218 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.h
@@ -102,6 +102,7 @@ class GUI_API_EXPORT ViewWindow : public MdiChild
void executeStructureChanges();
QString getCurrentTrigger() const;
void applyInitialTab();
+ QString getCurrentDdl() const;
Db* db = nullptr;
QString database;