Finally we have solved the session restore problems, and Quassel Core should
authorManuel Nickschas <sputnick@quassel-irc.org>
Wed, 20 Feb 2008 17:24:13 +0000 (17:24 +0000)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 20 Feb 2008 17:24:13 +0000 (17:24 +0000)
now be able to restore its session in a matter of seconds!

src/core/SQL/SQLite/7/select_lastMessage.sql [deleted file]
src/core/coresession.cpp
src/core/networkconnection.cpp
src/core/sql.qrc
src/core/sqlitestorage.cpp
version.inc

diff --git a/src/core/SQL/SQLite/7/select_lastMessage.sql b/src/core/SQL/SQLite/7/select_lastMessage.sql
deleted file mode 100644 (file)
index bbd3b1d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-SELECT messageid FROM backlog
-WHERE time = :time AND bufferid = :bufferid AND type = :type AND senderid = (SELECT senderid FROM sender WHERE sender = :sender)
index e3c5845..165753a 100644 (file)
@@ -205,7 +205,7 @@ void CoreSession::restoreSessionState() {
       QStringList l = chan.split("/");
       network(id)->addPersistentChannel(l[0], l[1]);
     }
-    qDebug() << "User" << user() << "connecting to" << network(id)->networkName();
+    //qDebug() << "User" << user() << "connecting to" << network(id)->networkName();
     connectToNetwork(id);
   }
 }
index e56bb93..0a2604c 100644 (file)
@@ -235,7 +235,8 @@ void NetworkConnection::sendPerform() {
       channels.append(chan);
     }
   }
-  userInputHandler()->handleJoin(statusBuf, QString("%1 %2").arg(channels.join(",")).arg(keys.join(",")));
+  QString joinString = QString("%1 %2").arg(channels.join(",")).arg(keys.join(",")).trimmed();
+  if(!joinString.isEmpty()) userInputHandler()->handleJoin(statusBuf, joinString);
 }
 
 void NetworkConnection::disconnectFromIrc() {
@@ -264,6 +265,8 @@ void NetworkConnection::socketError(QAbstractSocket::SocketError) {
     setConnectionState(Network::Disconnected);
     socketDisconnected();
   }
+  //qDebug() << "exiting...";
+  //exit(1);
 }
 
 void NetworkConnection::socketConnected() {
index 47886fb..cf91082 100644 (file)
@@ -1,95 +1,94 @@
 <!DOCTYPE RCC><RCC version="1.0">
 <qresource>
-    <file>./SQL/SQLite/1/upgrade_000_drop_coreinfo.sql</file>
     <file>./SQL/SQLite/1/upgrade_010_create_coreinfo.sql</file>
+    <file>./SQL/SQLite/1/upgrade_000_drop_coreinfo.sql</file>
     <file>./SQL/SQLite/1/upgrade_020_update_schemaversion.sql</file>
-    <file>./SQL/SQLite/2/upgrade_000_drop_buffergroup.sql</file>
     <file>./SQL/SQLite/2/upgrade_010_update_schemaversion.sql</file>
+    <file>./SQL/SQLite/2/upgrade_000_drop_buffergroup.sql</file>
     <file>./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql</file>
     <file>./SQL/SQLite/3/upgrade_010_update_schemaversion.sql</file>
+    <file>./SQL/SQLite/4/upgrade_999_update_schemaversion.sql</file>
     <file>./SQL/SQLite/4/upgrade_000_rename_buffertable.sql</file>
-    <file>./SQL/SQLite/4/upgrade_010_create_buffertable.sql</file>
+    <file>./SQL/SQLite/4/upgrade_050_create_buffer_cname_idx.sql</file>
     <file>./SQL/SQLite/4/upgrade_020_copy_buffertable.sql</file>
+    <file>./SQL/SQLite/4/upgrade_010_create_buffertable.sql</file>
     <file>./SQL/SQLite/4/upgrade_030_drop_oldbuffertable.sql</file>
     <file>./SQL/SQLite/4/upgrade_040_create_buffer_idx.sql</file>
-    <file>./SQL/SQLite/4/upgrade_050_create_buffer_cname_idx.sql</file>
-    <file>./SQL/SQLite/4/upgrade_999_update_schemaversion.sql</file>
-    <file>./SQL/SQLite/5/upgrade_000_rename_networktable.sql</file>
-    <file>./SQL/SQLite/5/upgrade_010_create_newnetworktable.sql</file>
-    <file>./SQL/SQLite/5/upgrade_020_copy_networktable.sql</file>
+    <file>./SQL/SQLite/5/upgrade_999_update_schemaversion.sql</file>
     <file>./SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql</file>
+    <file>./SQL/SQLite/5/upgrade_020_copy_networktable.sql</file>
     <file>./SQL/SQLite/5/upgrade_180_create_ircservers.sql</file>
-    <file>./SQL/SQLite/5/upgrade_999_update_schemaversion.sql</file>
+    <file>./SQL/SQLite/5/upgrade_010_create_newnetworktable.sql</file>
+    <file>./SQL/SQLite/5/upgrade_000_rename_networktable.sql</file>
+    <file>./SQL/SQLite/6/upgrade_040_update_msgtype.sql</file>
     <file>./SQL/SQLite/6/upgrade_000_alter_buffertable.sql</file>
-    <file>./SQL/SQLite/6/upgrade_010_set_statusbuffertype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_020_set_channelbuffertype.sql</file>
     <file>./SQL/SQLite/6/upgrade_030_set_querybuffertype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_040_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_050_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_060_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_070_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_080_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_090_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_100_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_110_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_120_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_130_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_140_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_150_update_msgtype.sql</file>
     <file>./SQL/SQLite/6/upgrade_160_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_140_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_120_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_100_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_090_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_070_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_050_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_020_set_channelbuffertype.sql</file>
     <file>./SQL/SQLite/6/upgrade_999_version.sql</file>
-    <file>./SQL/SQLite/7/delete_backlog_by_uid.sql</file>
-    <file>./SQL/SQLite/7/delete_backlog_for_buffer.sql</file>
-    <file>./SQL/SQLite/7/delete_backlog_for_network.sql</file>
-    <file>./SQL/SQLite/7/delete_buffer_for_bufferid.sql</file>
-    <file>./SQL/SQLite/7/delete_buffers_by_uid.sql</file>
-    <file>./SQL/SQLite/7/delete_buffers_for_network.sql</file>
-    <file>./SQL/SQLite/7/delete_ircservers_for_network.sql</file>
-    <file>./SQL/SQLite/7/delete_network.sql</file>
-    <file>./SQL/SQLite/7/delete_networks_by_uid.sql</file>
-    <file>./SQL/SQLite/7/delete_quasseluser.sql</file>
-    <file>./SQL/SQLite/7/insert_buffer.sql</file>
-    <file>./SQL/SQLite/7/insert_message.sql</file>
+    <file>./SQL/SQLite/6/upgrade_150_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_130_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_010_set_statusbuffertype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_110_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_080_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_060_update_msgtype.sql</file>
     <file>./SQL/SQLite/7/insert_network.sql</file>
     <file>./SQL/SQLite/7/insert_quasseluser.sql</file>
-    <file>./SQL/SQLite/7/insert_sender.sql</file>
-    <file>./SQL/SQLite/7/insert_server.sql</file>
-    <file>./SQL/SQLite/7/select_authuser.sql</file>
-    <file>./SQL/SQLite/7/select_buffer_by_id.sql</file>
-    <file>./SQL/SQLite/7/select_buffer_lastseen_dates.sql</file>
+    <file>./SQL/SQLite/7/select_networkExists.sql</file>
+    <file>./SQL/SQLite/7/insert_buffer.sql</file>
+    <file>./SQL/SQLite/7/setup_020_network.sql</file>
+    <file>./SQL/SQLite/7/delete_networks_by_uid.sql</file>
     <file>./SQL/SQLite/7/select_bufferByName.sql</file>
-    <file>./SQL/SQLite/7/select_bufferExists.sql</file>
-    <file>./SQL/SQLite/7/select_buffers.sql</file>
-    <file>./SQL/SQLite/7/select_lastMessage.sql</file>
     <file>./SQL/SQLite/7/select_messageRange.sql</file>
-    <file>./SQL/SQLite/7/select_messages.sql</file>
-    <file>./SQL/SQLite/7/select_messagesOffset.sql</file>
-    <file>./SQL/SQLite/7/select_messagesSince.sql</file>
+    <file>./SQL/SQLite/7/insert_message.sql</file>
+    <file>./SQL/SQLite/7/setup_000_quasseluser.sql</file>
+    <file>./SQL/SQLite/7/setup_999_version.sql</file>
+    <file>./SQL/SQLite/7/update_username.sql</file>
     <file>./SQL/SQLite/7/select_messagesSinceOffset.sql</file>
-    <file>./SQL/SQLite/7/select_networkExists.sql</file>
-    <file>./SQL/SQLite/7/select_networks_for_user.sql</file>
+    <file>./SQL/SQLite/7/delete_buffers_by_uid.sql</file>
+    <file>./SQL/SQLite/7/select_bufferExists.sql</file>
     <file>./SQL/SQLite/7/select_servers_for_network.sql</file>
+    <file>./SQL/SQLite/7/delete_network.sql</file>
+    <file>./SQL/SQLite/7/delete_backlog_by_uid.sql</file>
+    <file>./SQL/SQLite/7/delete_quasseluser.sql</file>
+    <file>./SQL/SQLite/7/select_messagesSince.sql</file>
+    <file>./SQL/SQLite/7/delete_backlog_for_network.sql</file>
+    <file>./SQL/SQLite/7/update_network.sql</file>
+    <file>./SQL/SQLite/7/delete_backlog_for_buffer.sql</file>
+    <file>./SQL/SQLite/7/upgrade_030_drop_oldnetworktable.sql</file>
+    <file>./SQL/SQLite/7/update_buffer_name.sql</file>
+    <file>./SQL/SQLite/7/setup_030_buffer.sql</file>
+    <file>./SQL/SQLite/7/setup_070_coreinfo.sql</file>
+    <file>./SQL/SQLite/7/upgrade_999_version.sql</file>
+    <file>./SQL/SQLite/7/upgrade_040_alter_buffer_add_lastseen.sql</file>
+    <file>./SQL/SQLite/7/insert_sender.sql</file>
     <file>./SQL/SQLite/7/select_userid.sql</file>
-    <file>./SQL/SQLite/7/setup_000_quasseluser.sql</file>
+    <file>./SQL/SQLite/7/upgrade_020_copy_networktable.sql</file>
     <file>./SQL/SQLite/7/setup_010_sender.sql</file>
-    <file>./SQL/SQLite/7/setup_020_network.sql</file>
-    <file>./SQL/SQLite/7/setup_030_buffer.sql</file>
     <file>./SQL/SQLite/7/setup_040_buffer_idx.sql</file>
-    <file>./SQL/SQLite/7/setup_050_buffer_cname_idx.sql</file>
     <file>./SQL/SQLite/7/setup_060_backlog.sql</file>
-    <file>./SQL/SQLite/7/setup_070_coreinfo.sql</file>
-    <file>./SQL/SQLite/7/setup_080_ircservers.sql</file>
-    <file>./SQL/SQLite/7/setup_999_version.sql</file>
-    <file>./SQL/SQLite/7/update_buffer_lastseen.sql</file>
-    <file>./SQL/SQLite/7/update_buffer_name.sql</file>
-    <file>./SQL/SQLite/7/update_network.sql</file>
-    <file>./SQL/SQLite/7/update_username.sql</file>
+    <file>./SQL/SQLite/7/select_buffers.sql</file>
+    <file>./SQL/SQLite/7/insert_server.sql</file>
+    <file>./SQL/SQLite/7/delete_ircservers_for_network.sql</file>
     <file>./SQL/SQLite/7/update_userpassword.sql</file>
-    <file>./SQL/SQLite/7/upgrade_000_rename_networktable.sql</file>
+    <file>./SQL/SQLite/7/select_networks_for_user.sql</file>
+    <file>./SQL/SQLite/7/select_buffer_by_id.sql</file>
+    <file>./SQL/SQLite/7/delete_buffer_for_bufferid.sql</file>
+    <file>./SQL/SQLite/7/select_buffer_lastseen_dates.sql</file>
     <file>./SQL/SQLite/7/upgrade_010_create_newnetworktable.sql</file>
-    <file>./SQL/SQLite/7/upgrade_020_copy_networktable.sql</file>
-    <file>./SQL/SQLite/7/upgrade_030_drop_oldnetworktable.sql</file>
-    <file>./SQL/SQLite/7/upgrade_040_alter_buffer_add_lastseen.sql</file>
-    <file>./SQL/SQLite/7/upgrade_999_version.sql</file>
+    <file>./SQL/SQLite/7/upgrade_000_rename_networktable.sql</file>
+    <file>./SQL/SQLite/7/delete_buffers_for_network.sql</file>
+    <file>./SQL/SQLite/7/select_authuser.sql</file>
+    <file>./SQL/SQLite/7/select_messages.sql</file>
+    <file>./SQL/SQLite/7/select_messagesOffset.sql</file>
+    <file>./SQL/SQLite/7/update_buffer_lastseen.sql</file>
+    <file>./SQL/SQLite/7/setup_050_buffer_cname_idx.sql</file>
+    <file>./SQL/SQLite/7/setup_080_ircservers.sql</file>
 </qresource>
 </RCC>
index be02b38..7ae4f0e 100644 (file)
@@ -553,20 +553,9 @@ MsgId SqliteStorage::logMessage(Message msg) {
     }
   }
 
-  QSqlQuery *getLastMessageIdQuery = cachedQuery("select_lastMessage");
-  getLastMessageIdQuery->bindValue(":time", msg.timestamp().toTime_t());
-  getLastMessageIdQuery->bindValue(":bufferid", msg.bufferInfo().bufferId().toInt());
-  getLastMessageIdQuery->bindValue(":type", msg.type());
-  getLastMessageIdQuery->bindValue(":sender", msg.sender());
-  getLastMessageIdQuery->exec();
-
-  if(getLastMessageIdQuery->first()) {
-    return getLastMessageIdQuery->value(0).toInt();
-  } else { // somethin went wrong... :(
-    qDebug() << getLastMessageIdQuery->lastQuery() << "time/bufferid/type/sender:" << msg.timestamp().toTime_t() << msg.bufferInfo().bufferId() << msg.type() << msg.sender();
-    Q_ASSERT(false);
-    return 0;
-  }
+  MsgId msgId = logMessageQuery->lastInsertId().toInt();
+  Q_ASSERT(msgId.isValid());
+  return msgId;
 }
 
 QList<Message> SqliteStorage::requestMsgs(BufferInfo buffer, int lastmsgs, int offset) {
index da0bd11..3c51ba9 100644 (file)
@@ -4,8 +4,8 @@
 { using namespace Global;
 
   quasselVersion = "0.2.0-pre";
-  quasselDate = "2008-02-19";
-  quasselBuild = 561;
+  quasselDate = "2008-02-20";
+  quasselBuild = 564;
 
   //! Minimum client build number the core needs
   clientBuildNeeded = 559;