Thanks Dinesh. I believe Ashesh is working on the remaining issues, so I'll await a cumulative update from him before I test further.
On Wed, Apr 24, 2013 at 2:39 PM, Dinesh Kumar <dinesh.ku...@enterprisedb.com > wrote: > Hi Ashesh, > > Thank you very much for your guidance on resolving the above issues. As of > now, i have debugged the debugger and fixed some of the issues, as per the > Dave's previous conversation. Please find the below status on this. > > > *- The layout of the parameters dialogue needs work - the grid needs to > size to the dialogue.* > Fixed. > > > *- The checkboxes in the grid are jumbo sized. We have them in the Edit > Grid already - can the code be reused? > * > Fixed. > > *- The popup activity dialog is kinda annoying. Perhaps we could put a > progress indicator in the status bar? Low priority. > * > Not Fixed, since it's a low priority i have scheduled it as my last task. > > *- When injecting new values into variables, if the value can't be > accepted (wrong datatype etc), then the grid should be reset to the > original value when the error message box is accepted.* > Fixed. > > *- If a function is re-executed in the same session, the return value > isn't cleared from the Results grid.* > Fixed. > > > *- If a function is re-executed in the same session, the breakpoints > are cleared. This doesn't seem to happen with in-process debugging, > only direct. > * > I have been tried a lot to resolve this issue with my trivial knowledge, > but i am not able to figure our out how to fix this. Apologizes for that. > As per my understanding, the re-start process of debugger, closing the > previous session handler and creating new session, may be this is the > reason, dbgController::ResultStack()'s fetch break point operation not able > to get the breakpoints of the previous session handler. > * > * > *- Aborting a direct debug session mid-function caused an indefinite(?) > hang with a busy cursor.* > As per our discussion, you have fixed this for the windows, i haven't > tested the fix for the mac. Sorry :) > * > - The status messages in the status bar are a little confusing. I > think you need to add "Done." to the end of the string when an action > completes, otherwise it looks like things never complete until you > step or run. > * > Fixed. > > Adding the patch for the above fixes. > > ** This is the extension to your patch. Requesting you to use vim -d > between your patch and this patch to get my patch. :) > > Kindly let me know, if any thing i missed here. > > Thanks in advance. > > Dinesh > > -- > *Dinesh Kumar* > Software Engineer > > Ph: +918087463317 > Skype ID: dinesh.kumar432 > www.enterprisedb.co > <http://www.enterprisedb.com/>m<http://www.enterprisedb.com/> > * > Follow us on Twitter* > @EnterpriseDB > > Visit EnterpriseDB for tutorials, webinars, > whitepapers<http://www.enterprisedb.com/resources-community> and > more <http://www.enterprisedb.com/resources-community> > > > On Thu, Apr 11, 2013 at 10:40 PM, Ashesh Vashi < > ashesh.va...@enterprisedb.com> wrote: > >> Sure. >> I'll work on it... >> On 11 Apr 2013 21:00, "Dave Page" <dp...@pgadmin.org> wrote: >> >>> Hi >>> >>> First impressions - it already seems more stable than the old code, >>> and I only played with it for an hour or so on Mac so far. Nice work >>> :-) >>> >>> I did find a few things in my initial testing that need some >>> attention. I didn't get the impression anything was particularly >>> serious or would be troublesome to fix though: >>> >>> - The layout of the parameters dialogue needs work - the grid needs to >>> size to the dialogue. >>> >>> - The checkboxes in the grid are jumbo sized. We have them in the Edit >>> Grid already - can the code be reused? >>> >>> - The popup activity dialog is kinda annoying. Perhaps we could put a >>> progress indicator in the status bar? Low priority. >>> >>> - When injecting new values into variables, if the value can't be >>> accepted (wrong datatype etc), then the grid should be reset to the >>> original value when the error message box is accepted. >>> >>> - If a function is re-executed in the same session, the return value >>> isn't cleared from the Results grid. >>> >>> - If a function is re-executed in the same session, the breakpoints >>> are cleared. This doesn't seem to happen with in-process debugging, >>> only direct. >>> >>> - Aborting a direct debug session mid-function caused an indefinite(?) >>> hang with a busy cursor. >>> >>> - The status messages in the status bar are a little confusing. I >>> think you need to add "Done." to the end of the string when an action >>> completes, otherwise it looks like things never complete until you >>> step or run. >>> >>> If you can fix those issues (with the possible exception of the >>> progress indicator), I'll dive in a bit deeper. I don't want to go too >>> deep just yet in case you have to change more than I expect. >>> >>> Thanks. >>> >>> On Wed, Apr 10, 2013 at 12:10 PM, Ashesh Vashi >>> <ashesh.va...@enterprisedb.com> wrote: >>> > Hi All, >>> > >>> > We always wanted to redesign the plpgsql debugger in pgAdmin III >>> from >>> > very long time due to very long list of bug >>> > Reports of the debugger. We were not able crack down variety of cases >>> across >>> > the platforms. For many cases - resolving >>> > On one platform, we ended up introducing other issues on another >>> platforms. >>> > This inability of handling variety of cases >>> > Across platforms made us to redesign the debugger from the scratch. >>> > >>> > Let me list down few the limitations/flaws with the current >>> implementation >>> > of the debugger: >>> > - Uses its own mechanism for making connection, querying (async/sync) & >>> > handing results instead of using the common >>> > available classes, which are used by all other components in pgAdmin >>> III. >>> > i.e. >>> > dbgConn, dbgResult, dbgPgThread, etc. >>> > >>> > Because of this, the improvements in the existing infrastructure were >>> > never reflected in the debugger. >>> > i.e. >>> > The connection with debugger were never be created with the SSL >>> support. >>> > Because - dbgConn never supported the SSL. >>> > This is also results for the many bugs. >>> > i.e. >>> > The dbgPgThread has its own mechanism to run queries >>> asynchronously and >>> > resulted into many bugs. It generates few >>> > events, which shouldn't be done after the completion of the debugger >>> > operations. And, that leads to crash. Using >>> > TestDestroy() function for JOINABLE threads were unnecessary and >>> never >>> > required. But - it is using it. >>> > >>> > - A hidden windows is taking care of the events generated during the >>> > debugging the actual window. It could have been >>> > Good, if all the tasks having intialited and handled from by this >>> central >>> > mechanism, instead we do have different >>> > places for handling both the direct/indirect debugging. And, that >>> > introduced a lot of issues. And, that made the >>> > things very confusing even to understand the existing mechanism. >>> > >>> > And, many more. >>> > >>> > We had to made changes in the existing infrastructure/classes to use >>> it with >>> > the debugger. >>> > * pgConn: >>> > + Report error quietly (if told) while error found in execution, this >>> > allows these functions to be used from any >>> > Thread. Otherwise, it used to throw an error. >>> > + Set/Reset the PGcancel object before and after the query execution, >>> > which will be useful for us to use the new >>> > Mechanism of libpq (of course, not very new) to cancel any query >>> > execution from in between. >>> > + Allow new application name, while duplicating the connection >>> > + Save the version and the features list, while duplicating the >>> > connection, this will avoid/reduce the duplicate calls >>> > To the database server. >>> > * pgQueryThread: >>> > + Allow to specify the custom notice processor and handler >>> > + Allow to run multiple queries by creating queue >>> > + Allow to use the EnterpriseDB's callable statement from the >>> > pgQueryThread (if available) >>> > + Proper cancellation mechanism implementation >>> > + Send a custom event to the caller (instead of standard event) for >>> > successful execution or on different errors >>> > (but - not if it is explicitly cancelled by the user.) This allows >>> us to >>> > send more information to the developer. >>> > + Allows the developer to add a batch queries (which should run >>> > asynchronously) even after starting of the thread. >>> > + Allow to use the PGparam now, to avoid generating the queries >>> > dynamically >>> > >>> > The new design is based on the MVC (Model-View-Controller) >>> architecture. >>> > * Controller (dbgController) >>> > - A central mechanism to handle all the operations. >>> > * View (frmDebugger - mostly reused) >>> > - Responsible for presentation and interaction with the end-user >>> > i.e. >>> > code viewer, different variable windows, stack window, etc. >>> > - It also controls other part of view. >>> > * Model (dbgModel) >>> > - Handles/Contains all the data >>> > - It contains the information about the target function/procedure. >>> > >>> > For any operation, View and Model will ask the Controller to handle it. >>> > >>> > Summary of the changes: >>> > >>> > INSERTED| DELETED| FILENAME | >>> SUMMARY >>> > >>> ---------+----------+---------------------------------------------|---------------------------- >>> > 3| 1| pgadmin/ctl/ctlSQLResult.cpp | - >>> Call >>> > cancel thread execution on exit, if already >>> > | >>> running >>> > for nice exit handling >>> > 196| 18| pgadmin/db/pgConn.cpp | - >>> > Set/Reset the PGcancel object >>> > | - >>> Saving >>> > settings and new application name, while >>> > | >>> cloning >>> > 31| 24| pgadmin/include/db/pgConn.h | >>> > 245| 33| pgadmin/include/db/pgQueryThread.h | >>> > 647| 111| pgadmin/db/pgQueryThread.cpp | - >>> > Multiple queries execution support (one-by-one) >>> > 8| 0| pgadmin/include/db/pgSet.h | - >>> > Introduce a new function GetCommandStatus for the >>> > | >>> result >>> > 0| 1| pgadmin/db/pgSet.cpp | - >>> > Removed unnecessary header inclusion >>> > 0| 1563| pgadmin/debugger/ctlCodeWindow.cpp | - >>> > Omitted/Removed it completely >>> > 0| 250| pgadmin/include/debugger/ctlCodeWindow.h | >>> > 9| 9| pgadmin/debugger/ctlMessageWindow.cpp | - >>> > Standardize the function naming conversion with the >>> > | >>> other >>> > components >>> > 5| 12| pgadmin/include/debugger/ctlMessageWindow.h | >>> > 28| 27| pgadmin/debugger/ctlResultGrid.cpp | - >>> Using >>> > the standard querying mechanism (pgSet) >>> > | >>> instead >>> > of libpq's PGresult directly >>> > 4| 3| pgadmin/include/debugger/ctlResultGrid.h | >>> > 4| 7| pgadmin/debugger/ctlStackWindow.cpp | - >>> > Standardize the function naming conversion with the >>> > | >>> other >>> > components >>> > 2| 2| pgadmin/include/debugger/ctlStackWindow.h | >>> > 50| 56| pgadmin/debugger/ctlTabWindow.cpp | - >>> > Standardize the function naming conversion with the >>> > | >>> other >>> > components >>> > 20| 17| pgadmin/include/debugger/ctlTabWindow.h | >>> > 60| 55| pgadmin/debugger/ctlVarWindow.cpp | - >>> > Standardize the function naming conversion with the >>> > | >>> other >>> > components >>> > 17| 15| pgadmin/include/debugger/ctlVarWindow.h | >>> > 819| 0| pgadmin/debugger/dbgController.cpp | - >>> > Central of the debugger (it takes care of all the >>> > | >>> > operations, the frmDebugger (view) and dbgModel >>> > | >>> (model) >>> > interact with it. >>> > 173| 0| pgadmin/include/debugger/dbgController.h | >>> > 0| 21| pgadmin/debugger/dbgDbResult.cpp | - >>> > Omitted/Removed it completely >>> > 703| 0| pgadmin/debugger/dbgEvents.cpp | - >>> Added >>> > new file, which contains all the event >>> > | >>> handling >>> > functions of the dbgController to reduce >>> > | >>> the size >>> > of dbgController and separating them from >>> > | the >>> > direct operations >>> > 63| 0| pgadmin/debugger/dbgModel.cpp | - >>> > Contains all the information regarding the >>> > | >>> target. >>> > 143| 0| pgadmin/include/debugger/dbgModel.h | >>> > 0| 544| pgadmin/debugger/dbgPgConn.cpp | - >>> > Omitted/Removed it completely >>> > 0| 363| pgadmin/debugger/dbgPgThread.cpp | - >>> > Omitted/Removed it completely >>> > 0| 157| pgadmin/debugger/dbgResultset.cpp | - >>> > Omitted/Removed it completely >>> > 536| 194| pgadmin/debugger/dbgTargetInfo.cpp | - >>> It >>> > fetches and saves the target information from >>> > | the >>> > database server (it is no more using the >>> > | >>> > deprecated pldbg_target_info function). >>> > 146| 75| pgadmin/include/debugger/dbgTargetInfo.h | >>> > 44| 101| pgadmin/debugger/debugger.cpp | - >>> > Debugger menu factory, modified accordingly new >>> > | >>> design >>> > 770| 682| pgadmin/debugger/dlgDirectDbg.cpp | - >>> > Handles now only taking input from the end-user >>> > | - >>> It >>> > also takes care of converting an expression >>> > | >>> input to >>> > a proper value >>> > | - >>> It >>> > also allows the end-user to use the default >>> > | >>> value of >>> > an argument through UI. >>> > | - >>> It >>> > does not control the debugger execution any >>> > | >>> more >>> > 74| 48| pgadmin/include/debugger/dlgDirectDbg.h | >>> > 734| 165| pgadmin/debugger/frmDebugger.cpp | - >>> Mostly >>> > reused >>> > | - >>> Works >>> > as presentation layer and takes input from >>> > | >>> from the >>> > end-user >>> > | >>> i.e. >>> > set/reset break-points, changing parameter >>> > | >>> > values, showing the target code, showing >>> > | >>> > current parameter values, etc. >>> > 114| 92| pgadmin/include/debugger/frmDebugger.h | >>> > 3| 5| pgadmin/debugger/module.mk | >>> > 5| 1| pgadmin/dlg/dlgClasses.cpp | - >>> Call >>> > cancel thread execution on exit, if already >>> > | >>> running >>> > for nice exit handling (ExecutionDialog) >>> > 4| 1| pgadmin/frm/frmEditGrid.cpp | - >>> Call >>> > cancel thread execution on abort >>> > 2| 2| pgadmin/frm/frmQuery.cpp | - >>> > Modified to use new custom event on query >>> > | >>> > execution completion >>> > 2| 1| pgadmin/include/frm/frmQuery.h | >>> > 1| 1| pgadmin/include/db/module.mk | >>> > 79| 0| pgadmin/include/db/pgQueryResultEvent.h | - >>> > Introduced a new custom event for handling the >>> > | >>> query >>> > execution error/success (pgQueryThread) >>> > 14| 21| pgadmin/include/debugger/dbgBreakPoint.h | - >>> > Reformatted the break-point according to new design >>> > 0| 38| pgadmin/include/debugger/dbgConnProp.h | - >>> > Omitted/Removed it completely >>> > 57| 10| pgadmin/include/debugger/dbgConst.h | >>> > 0| 53| pgadmin/include/debugger/dbgDbResult.h | - >>> > Omitted/Removed it completely >>> > 0| 99| pgadmin/include/debugger/dbgPgConn.h | - >>> > Omitted/Removed it completely >>> > 0| 95| pgadmin/include/debugger/dbgPgThread.h | - >>> > Omitted/Removed it completely >>> > 0| 52| pgadmin/include/debugger/dbgResultset.h | - >>> > Omitted/Removed it completely >>> > 2| 6| pgadmin/include/debugger/module.mk | >>> > 3| 6| pgadmin/include/precomp.h | >>> > 7| 12| pgadmin/pgAdmin3.vcxproj | - >>> Window >>> > build script changes >>> > 10| 28| pgadmin/pgAdmin3.vcxproj.filters | >>> > 3| 3| pgadmin/ii/dlgDirectDbg.xrc | - >>> Input >>> > Arguments dialog change (changed the >>> > | >>> > dimensions.) >>> > 44| 44| pgadmin/ii/xrcDialogs.cpp | >>> > >>> > >>> > -- >>> > >>> > Thanks & Regards, >>> > >>> > Ashesh Vashi >>> > EnterpriseDB INDIA: Enterprise PostgreSQL Company >>> > >>> > >>> > http://www.linkedin.com/in/asheshvashi >>> > >>> > >>> > >>> > -- >>> > Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >>> > To make changes to your subscription: >>> > http://www.postgresql.org/mailpref/pgadmin-hackers >>> > >>> >>> >>> >>> -- >>> Dave Page >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EnterpriseDB UK: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >> > -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company