Le 23/12/2010 00:31, Dave Page a écrit :
> On Thu, Dec 23, 2010 at 12:05 AM, Guillaume Lelarge
> <guilla...@lelarge.info> wrote:
>> Le 22/12/2010 10:26, Dave Page a écrit :
>>> On Wed, Dec 22, 2010 at 10:15 AM, Guillaume Lelarge
>>> <guilla...@lelarge.info> wrote:
>>>> Le 22/12/2010 09:47, Dave Page a écrit :
>>>>> Guillaume; do we have a limit on the size of data we'll store in the
>>>>> history file? We've seen 3 or 4 reports like this.
>>>>>
>>>>
>>>> The Options dialog says yes (1024 characters). But, AFAICT from reading
>>>> the source code, we don't use it :-/ I was sure we did. Will fix it today.
>>>
>>> Oops.
>>>
>>
>> I looked a bit more at this issue. We use the option. The flow of
>> operations is:
>>  * put the query in the combobox and the file
>>  * execute the query
>>  * if the query fails, delete it from the combobox and the file
>>  * if it's bigger than the max size, delete it from combobox and file
>>
>> The reasoning behind all this is to still be able to look at your query
>> if it crashes pgAdmin. So you don't have to type it again. You just need
>> to select it in the combobox and fix it.
> 
> We can still limit the size of query written to the file. If you want
> crash protection, use a temp file or something, rather than trying to
> overload that on the history mechanism. If the file exists when the
> query tool is reloaded, load the file (like word or openoffice do).
> 
> Those really are two different functions...
> 

I agree. Don't know why I mixed the two. So I have a new patch
(attached). It changes the current behaviour.

Current behaviour:

  When query is launched
    Save query
  When query is done
    If unsuccessul
      Delete query
    If successful
      If it's bigger than max size
        Delete query
      Else if already present
        Delete the old one

New behaviour

  When query is done
    If successful
      If it's less than max size
        Add query
      If already present
        Delete the old one

This really changes the behaviour. I wrote the patch for the 1.12
branch, but I'm not sure we really want it there. So, only master, or
master and 1.12?


-- 
Guillaume
 http://www.postgresql.fr
 http://dalibo.com
diff --git a/pgadmin/frm/frmQuery.cpp b/pgadmin/frm/frmQuery.cpp
index 667869f..d26f7bf 100644
--- a/pgadmin/frm/frmQuery.cpp
+++ b/pgadmin/frm/frmQuery.cpp
@@ -2292,13 +2292,6 @@ void frmQuery::execQuery(const wxString &query, int resultToRetrieve, bool singl
     Update();
     wxTheApp->Yield(true);
 
-    wxString tmp = query;
-    tmp.Replace(wxT("\n"), wxT(" "));
-    tmp.Replace(wxT("\r"), wxT(" "));
-    sqlQueries->Append(tmp);
-    histoQueries.Add(query);
-    SaveQueries();
-
     startTimeQuery=wxGetLocalTimeMillis();
     timer.Start(10);
 
@@ -2373,12 +2366,6 @@ void frmQuery::OnQueryComplete(wxCommandEvent &ev)
         }
         else
         {
-            // unsuccessfull queries are deleted of the history
-            histoQueries.RemoveAt(sqlQueries->GetCount()-1);
-            sqlQueries->Delete(sqlQueries->GetCount()-1);
-            btnDeleteCurrent->Enable(sqlQueries->GetValue().Length()>0);
-            btnDeleteAll->Enable(sqlQueries->GetCount() > 0);
-
             pgError err = sqlResult->GetResultError();
             wxString errMsg = err.formatted_msg;
             wxLogQuietError(wxT("%s"), conn->GetLastError().Trim().c_str());
@@ -2483,21 +2470,22 @@ void frmQuery::OnQueryComplete(wxCommandEvent &ev)
 
     if (sqlResult->RunStatus() == PGRES_TUPLES_OK || sqlResult->RunStatus() == PGRES_COMMAND_OK)
     {
-        // Delete the current query if its size is bigger than the max allowed
-        if (sqlQueries->GetString(sqlQueries->GetCount() - 1).Len() > (unsigned int)settings->GetHistoryMaxQuerySize())
+        if (sqlQuery->GetText().Len() < (unsigned int)settings->GetHistoryMaxQuerySize())
         {
-	        histoQueries.RemoveAt(sqlQueries->GetCount() - 1);
-            sqlQueries->Delete(sqlQueries->GetCount() - 1);
+            wxString tmp = sqlQuery->GetText();
+            tmp.Replace(wxT("\n"), wxT(" "));
+            tmp.Replace(wxT("\r"), wxT(" "));
+            sqlQueries->Append(tmp);
+            histoQueries.Add(sqlQuery->GetText());
+            SaveQueries();
         }
-        else
+
+        // Delete an old query if it matches the current one
+        unsigned int index = histoQueries.Index(sqlQueries->GetString(sqlQueries->GetCount() - 1), false);
+        if (index != (unsigned int)wxNOT_FOUND && index < ((unsigned int)sqlQueries->GetCount() - 1))
         {
-            // Delete an old query if it matches the current one
-            unsigned int index = histoQueries.Index(sqlQueries->GetString(sqlQueries->GetCount() - 1), false);
-            if (index != (unsigned int)wxNOT_FOUND && index < ((unsigned int)sqlQueries->GetCount() - 1))
-            {
-	            histoQueries.RemoveAt(index);
-                sqlQueries->Delete(index);
-            }
+	        histoQueries.RemoveAt(index);
+            sqlQueries->Delete(index);
         }
     }
 
-- 
Sent via pgadmin-support mailing list (pgadmin-support@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-support

Reply via email to