Re: [pgadmin-hackers] Update pgAdmin4 version on pgadmin.org from 1.4 to 1.5
Thanks, updated. On Fri, May 19, 2017 at 1:21 PM, Harshal Dhumal < harshal.dhu...@enterprisedb.com> wrote: > Hi Dave, > > Text 1.4 is not updated to 1.5 on pgadmin.org > > [image: Inline image 2] > -- > *Harshal Dhumal* > *Sr. Software Engineer* > > EnterpriseDB India: 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
[pgadmin-hackers] Update pgAdmin4 version on pgadmin.org from 1.4 to 1.5
Hi Dave, Text 1.4 is not updated to 1.5 on pgadmin.org [image: Inline image 2] -- *Harshal Dhumal* *Sr. Software Engineer* EnterpriseDB India: http://www.enterprisedb.com The Enterprise PostgreSQL Company
[pgadmin-hackers] Update Windows project files to VS 2013?
Does anyone object if I update the Windows project files to Visual Studio 2013 format? That's what is being used for the EDB installer builds and my MSI packages of pgAdmin now. -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
Re: [pgadmin-hackers] Update Windows project files to VS 2013?
Le 9 oct. 2014 21:14, Dave Page dp...@pgadmin.org a écrit : Does anyone object if I update the Windows project files to Visual Studio 2013 format? That's what is being used for the EDB installer builds and my MSI packages of pgAdmin now. Nope. No objection.
Re: [pgadmin-hackers] Update functions and trigger functions by clicking
On Tue, Jun 7, 2011 at 1:51 AM, Vinicius Santos vinicius.santos.li...@gmail.com wrote: I'd probably be happy with a patch that offered *both* refresh object on click and refresh object and children on click, but not just the latter - the use case is just too narrow imho. I agree with you. What do you think of a ComboBox with the two options? Sure. Three options though - don't forget to keep the current behaviour as an option. I'll start to develop, and sending the patch in a few weeks, so you take a look. Thanks! -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
Re: [pgadmin-hackers] Update functions and trigger functions by clicking
On Sat, Jun 4, 2011 at 8:05 PM, Vinicius Santos vinicius.santos.li...@gmail.com wrote: Hi, sorry for the delay in responding. I agree to share with you. First, the update will be different for F5 refresh and per click refresh. This could confuse people. I don't think so - there's a pretty obvious difference between refreshing the tree on selection of a menu option or button click, and simply refreshing the object that's selected. Second, this does not obviate the problem of another user to create, for example, a table and this table does not appear to me. No. it doesn't. In other words, I think my Schema is completely updated, when in fact it is not. What do you think? Updating the entire schema (it may well be that much, if everything is expanded) is going to be far too expensive on anything but the smallest database on a very fast machine. We have users with schemas ranging from a handful to tens or even hundreds of thousands of objects - for most them, refreshing a whole schema hierarchy on every click is not an option. I'd probably be happy with a patch that offered *both* refresh object on click and refresh object and children on click, but not just the latter - the use case is just too narrow imho. -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
Re: [pgadmin-hackers] Update functions and trigger functions by clicking
I'd probably be happy with a patch that offered *both* refresh object on click and refresh object and children on click, but not just the latter - the use case is just too narrow imho. I agree with you. What do you think of a ComboBox with the two options? I'll start to develop, and sending the patch in a few weeks, so you take a look. Thanks.
Re: [pgadmin-hackers] Update functions and trigger functions by clicking
Hi, sorry for the delay in responding. I agree to share with you. First, the update will be different for F5 refresh and per click refresh. This could confuse people. Second, this does not obviate the problem of another user to create, for example, a table and this table does not appear to me. In other words, I think my Schema is completely updated, when in fact it is not. What do you think? Again, I do not know the translation is perfect. -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
Re: [pgadmin-hackers] Update functions and trigger functions by clicking
On Mon, May 30, 2011 at 1:58 AM, Vinicius Santos vinicius.santos.li...@gmail.com wrote: in an object type independent way - ie. in pgObject for example. Not sure how feasible that is though... Hello, It could take a look at my patch? I thought of other ways to implement, but I ended up with this. Hi, That seems pretty simple, but I think it misses one of the big issues - avoiding pushing the refresh down the entire tree. As an example, consider what happens if you click on a schema. As the code stands, it looks like it'll cause not only the schema to be refreshed, but all of the sub-objects that are currently populated on the tree. That could make that click very expensive. I think we need to find a way to ensure that the refresh is constrained to the appropriate subset of objects - for a table, that will probably include some of the sub-objects (eg. columns), for a schema, just the schema itself. -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
Re: [pgadmin-hackers] Update functions and trigger functions by clicking
in an object type independent way - ie. in pgObject for example. Not sure how feasible that is though... Hello, It could take a look at my patch? I thought of other ways to implement, but I ended up with this. Thanks. From d85df2b2543a2974cdd1b8679938cce32991f1b9 Mon Sep 17 00:00:00 2001 From: viniciussantos vin...@hotmail.com Date: Sun, 29 May 2011 22:08:52 -0300 Subject: [PATCH] UpdateObjects implementation. --- pgadmin/frm/events.cpp | 12 pgadmin/frm/frmOptions.cpp |3 +++ pgadmin/include/utils/sysSettings.h | 10 ++ pgadmin/ui/frmOptions.xrc |7 +++ 4 files changed, 32 insertions(+), 0 deletions(-) diff --git a/pgadmin/frm/events.cpp b/pgadmin/frm/events.cpp index 0e6b078..92b5d7b 100644 --- a/pgadmin/frm/events.cpp +++ b/pgadmin/frm/events.cpp @@ -369,6 +369,7 @@ void frmMain::OnTreeSelChanged(wxTreeEvent event) void frmMain::execSelChange(wxTreeItemId item, bool currentNode) { + static bool refresh = true; if (currentNode) { properties-ClearAll(); @@ -390,6 +391,17 @@ void frmMain::execSelChange(wxTreeItemId item, bool currentNode) } else { + //Update objects by clicking, if the option is checked. + if (settings-GetUpdateObjects() refresh +currentObject-GetTypeName() != wxT(Server) +currentObject-GetTypeName() != wxT(Servers) +currentObject-GetTypeName() != wxT(Databases)) + { + refresh = false; + Refresh(currentObject); + refresh = true; + } + if (currentNode) { properties-Freeze(); diff --git a/pgadmin/frm/frmOptions.cpp b/pgadmin/frm/frmOptions.cpp index 22e4c43..478ceb9 100644 --- a/pgadmin/frm/frmOptions.cpp +++ b/pgadmin/frm/frmOptions.cpp @@ -100,6 +100,7 @@ #define pickerSQLColour11 CTRL_COLOURPICKER(pickerSQLColour11) #define pickerSQLCaretColour CTRL_COLOURPICKER(pickerSQLCaretColour) #define chkKeywordsInUppercase CTRL_CHECKBOX(chkKeywordsInUppercase) +#define chkUpdateObjects CTRL_CHECKBOX(chkUpdateObjects) BEGIN_EVENT_TABLE(frmOptions, pgDialog) EVT_MENU(MNU_HELP, frmOptions::OnHelp) @@ -265,6 +266,7 @@ frmOptions::frmOptions(frmMain *parent) pickerEnterprisedbPath-SetPath(settings-GetEnterprisedbPath()); pickerGPDBPath-SetPath(settings-GetGPDBPath()); chkIgnoreVersion-SetValue(settings-GetIgnoreVersion()); + chkUpdateObjects-SetValue(settings-GetUpdateObjects()); // Get back the colours pickerIdleProcessColour-SetColour(settings-GetIdleProcessColour()); @@ -619,6 +621,7 @@ void frmOptions::OnOK(wxCommandEvent ev) settings-SetIgnoreVersion(chkIgnoreVersion-GetValue()); + settings-SetUpdateObjects(chkUpdateObjects-GetValue()); if (chkResetHints-GetValue()) frmHint::ResetHints(); diff --git a/pgadmin/include/utils/sysSettings.h b/pgadmin/include/utils/sysSettings.h index e21406a..9d6b016 100644 --- a/pgadmin/include/utils/sysSettings.h +++ b/pgadmin/include/utils/sysSettings.h @@ -668,6 +668,16 @@ public: { WriteBool(wxT(IgnoreVersion), newval); } + bool GetUpdateObjects() const + { + bool b; + Read(wxT(UpdateObjects), b, false); + return b; + } + void SetUpdateObjects(const bool newval) + { + WriteBool(wxT(UpdateObjects), newval); + } // Functions for storing settings bool Write(const wxString key, const wxString value) diff --git a/pgadmin/ui/frmOptions.xrc b/pgadmin/ui/frmOptions.xrc index 73a25f3..605e307 100644 --- a/pgadmin/ui/frmOptions.xrc +++ b/pgadmin/ui/frmOptions.xrc @@ -282,6 +282,13 @@ flagwxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT/flag border4/border /object +object class=sizeritem + object class=wxCheckBox name=chkUpdateObjects +labelUpdate objects by clicking/label + /object + flagwxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT|wxRIGHT/flag + border4/border +/object /object /object /object -- 1.7.3.1.msysgit.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
Re: [pgadmin-hackers] Update functions and trigger functions by clicking
On Fri, May 27, 2011 at 11:57 AM, Vinicius Santos vinicius.santos.li...@gmail.com wrote: What I'd really like to see is an option which enables on-selection refreshing for all object types. OK. I will develop it , and send a patch for you to analyze. Cool, thanks :-). Ideally, something like this should be implemented in an object type independent way - ie. in pgObject for example. Not sure how feasible that is though... -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
Re: [pgadmin-hackers] Update functions and trigger functions by clicking
Cool, thanks :-). Ideally, something like this should be implemented in an object type independent way - ie. in pgObject for example. Not sure how feasible that is though... I thought just in pgObject. I'll write and tell me what you think. Should I send this afternoon (afternoon for me, here in Brazil) :-) Thanks.
Re: [pgadmin-hackers] Update functions and trigger functions by clicking
Le 05/27/2011 02:08 PM, Vinicius Santos a écrit : Cool, thanks :-). Ideally, something like this should be implemented in an object type independent way - ie. in pgObject for example. Not sure how feasible that is though... I thought just in pgObject. I'll write and tell me what you think. Should I send this afternoon (afternoon for me, here in Brazil) :-) Take your time, there's no need to hurry. Our current HEAD is frozen (for new features, that is). It won't get applied anytime soon. -- Guillaume http://www.postgresql.fr http://dalibo.com -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
[pgadmin-hackers] Update functions and trigger functions by clicking
Hello, I implemented an option to update functions and trigger functions, by clicking on them in the treeview. This avoids problems when someone changes the function, and I get the old version and then overwrite it, without reminding me from updating (F5) before. I did a checkbox in the form of options. This would be useful for everyone? Thanks. Excuse my English Google Translate -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
Re: [pgadmin-hackers] Update German Translation
Hi Steffen, Le 11/12/2010 17:25, Steffen Kuhn a écrit : [...] updated german translation. Commited, thanks. -- Guillaume http://www.postgresql.fr http://dalibo.com -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
Re: [pgadmin-hackers] Update www: new screenshots
Le 09/05/2010 12:05, Guillaume Lelarge a écrit : Hi, I took a look at our website. The screenshots are pretty old. I updated all the screenshots I could. You can have a look at them here: http://wwwdevel.pgadmin.org/screenshots/index.php I also updated the features page, the TODO file, the roadmap page and probably a few other things. This is not commited right now. You'll find a patch attached. Waiting for your comments to apply it. BTW, may I apply the 1.12 visual tour? and keep the old one right now, till we release 1.12. No comments on the patch? may I apply it? -- Guillaume. http://www.postgresqlfr.org http://dalibo.com -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
[pgadmin-hackers] Update www: new screenshots
Hi, I took a look at our website. The screenshots are pretty old. I updated all the screenshots I could. You can have a look at them here: http://wwwdevel.pgadmin.org/screenshots/index.php I also updated the features page, the TODO file, the roadmap page and probably a few other things. This is not commited right now. You'll find a patch attached. Waiting for your comments to apply it. BTW, may I apply the 1.12 visual tour? and keep the old one right now, till we release 1.12. Thanks. -- Guillaume. http://www.postgresqlfr.org http://dalibo.com Index: pgadmin3/TODO === --- pgadmin3/TODO (révision 8351) +++ pgadmin3/TODO (copie de travail) @@ -19,14 +19,11 @@ Enhancements / wishes - -- Cache datatypes used by dlgColumn as reloading them when adding multiple - columns to a new table can be slow over WANs. - Add an option (or change the UI to something more usable with lots of types) to include table types in the data type combo boxes where appropriate. - Ability to search a database for objects with a specific name. -- Attempt to reconnect to the server following a connection failure. -- Allow the user to disconnect individual databases -- detect serial columns from pg_depend, not column default (observe deviating +- Allow the user to disconnect individual databases (#185) +- Detect serial columns from pg_depend, not column default (observe deviating serial name) - Slony-I failover - Drop object using replication @@ -44,7 +41,6 @@ - Updateable View wizard - Most property dlgs: check for readOnly if no sufficient rights are available - CREATE TABLE LIKE table -- Operator class property: to implement - Find solution for dlgProperty::AppendQuoted if schemaname has a dot - Allow EditGrid to use comboboxes filled from FK tables. - Add an option to the Query Tool to exclusively lock files whilst they're Index: www/development/roadmap.php === --- www/development/roadmap.php (révision 8351) +++ www/development/roadmap.php (copie de travail) @@ -7,47 +7,47 @@ h1' . _(Roadmap) . '/h1 -p' . sprintf(_(This roadmap outlines the work that is hoped will be done in the %s development cycle for release in version %s of pgAdmin.), 1.9, 1.10) . '/p +p' . sprintf(_(This roadmap outlines the work that is hoped will be done in the %s development cycle for release in version %s of pgAdmin.), 1.13, 1.14) . '/p ul - li' . _(PostgreSQL 8.4 compatibility (these items are subject to change)) . 'br /nbsp; + li' . _(PostgreSQL compatibility) . 'br /nbsp; ul - lis' . _(TRUNCATE trigger support) . '/sbr /nbsp;/li - lis' . _(Add support for variadic functions) . '/sbr /nbsp;/li - li' . _(To be determined...) . 'br /nbsp;/li + li' . _(Complete 9.1 support) . 'br /nbsp;/li + li' . _(Finish 9.0 support with exclusion constraints) . 'br /nbsp;/li + li' . _(Finish 8.4 support with SQL/Med objects) . 'br /nbsp;/li /ul /li li' . _(Code housekeeping) . 'br /nbsp; ul li' . _(Check for and remove any custom controls that are now implemented in wxWidgets.) . 'br /nbsp;/li - lis' . _(Move pgAgent into a standalone package that can be released on it's own schedule.) . '/sbr /nbsp;/li + li' . _(Check for the use of wxWidgets 2.9/3.0.) . 'br /nbsp;/li /ul /li - li' . _(Build system) . 'br /nbsp; -ul - li' . _(Consider cross-platform build systems such as cmake to generate the build system for all platforms) . 'br /nbsp;/li -/ul - /li - li' . _(Functionality) . 'br /nbsp; ul - lis' . _(Add DROP/REASSIGN OWNED support. [GL]) . '/sbr /nbsp;/li - li' . _(Logfile tab on server status window : multiple columns and filtering. [GL]) . 'br /nbsp;/li + li' . _(Better i18n support [GL]) . 'br /nbsp;/li + li' . _(Show/hide columns in frmStatus's reports [GL]) . 'br /nbsp;/li + li' . _(Filter rows in frmStatus's reports [GL]) . 'br /nbsp;/li + li' . _(Logfile: columns according to log_line_prefix, filename according to log_filename, etc. in frmStatus [GL]) . 'br /nbsp;/li + li' . _(Custom reports in frmStatus [GL]) . 'br /nbsp;/li + li' . _(Graphs in frmStatus [GL]) . 'br /nbsp;/li li' . _(Redesign Table dialogue to remove sub-dialogues where possible and replace with grid style UI [DP]) . 'br /nbsp;/li - lis' . _(Support for integrated tsearch configuration in PG 8.3+ [GL]) . '/sbr /nbsp;/li li' . _(Data tune-up options for slow queries (requires XML EXPLAIN in PG 8.4) [DP]) . 'br /nbsp;/li li' . _(pgsql-performance report tool for problematic queries (requires XML EXPLAIN in PG 8.4) [DP]) . 'br /nbsp;/li - lis' . _(Overhaul settings management. Save settings on the fly rather than at exit. Take default values from an external file [DP]) . '/sbr /nbsp;/li li' . _(Add a dialog to allow the user to
Re: [pgadmin-hackers] Update of the pgScript help page
Mickael Deloison wrote: Hi, Here is a patch for the pgScript help page: better presentation and same look as pgAdmin documentation. Thanks, applied. And it helped with gzipping the file, no issues applying it this time. //Magnus -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
[pgadmin-hackers] Update of the pgScript help page
Hi, Here is a patch for the pgScript help page: better presentation and same look as pgAdmin documentation. Regards, Mickael pgscript.help.patch.gz Description: GNU Zip compressed data -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers
Re: [pgadmin-hackers] Update pgAdmin3 and Website for Indonesian Translation
Many thanks - updates applied to CVS. It might take a day or so for them to work their way up to the status pages etc. Regards, Dave -Original Message- From: Erwien Samantha Y [mailto:[EMAIL PROTECTED] Sent: 08 October 2004 05:43 To: Dave Page Cc: [EMAIL PROTECTED] Subject: Update pgAdmin3 and Website for Indonesian Translation Dear Dave Page, This my new update for pgAdmin3 and Website. Thanks Erwien Samantha. ---(end of broadcast)--- TIP 8: explain analyze is your friend
Re: [pgadmin-hackers] update for id_ID Translation
-Original Message- From: Erwien Samantha Y [mailto:[EMAIL PROTECTED] Sent: 08 September 2004 07:40 To: [EMAIL PROTECTED] Cc: Dave Page Subject: update for id_ID Translation Dear All, I finish update the id_ID translation, Here's the attachment. Thanks - update applied. Should be reflected on the translations page withn a few hours. Regards, Dave ---(end of broadcast)--- TIP 2: you can get off all lists at once with the unregister command (send unregister YourEmailAddressHere to [EMAIL PROTECTED])
Re: [pgadmin-hackers] Update
Dave Page wrote: It would be cool if there were a generic mechanism we could use to write the version number into scripts 'n' stuff at configure time. The would certainly make my life easier with various build scripts. By "write them into scripts" what do you mean? Can you provide an example of what you would like to see? ahp
Re: [pgadmin-hackers] Update
Title: Message -Original Message-From: Adam H. Pendleton [mailto:[EMAIL PROTECTED] Sent: 07 October 2003 13:37To: Dave PageCc: pgadmin-hackersSubject: Re: [pgadmin-hackers] UpdateDave Page wrote: It would be cool if there were a generic mechanism we could use to write the version number into scripts 'n' stuff at configure time. The would certainly make my life easier with various build scripts. By "write them into scripts" what do you mean? Can you provide an example of what you would like to see? Say I have some code in a script that looks like: mv pgadmin3.tgz pgadmin3-${VERSION}.tgz When configure runs, it then changes that to: mv pgadmin3.tgz pgadmin3-1.1.0.tgz Rather than change it of course, it could take script.in and create script. Regards, Dave.
Re: [pgadmin-hackers] Update
Title: Message -Original Message-From: Adam H. Pendleton [mailto:[EMAIL PROTECTED] Sent: 07 October 2003 13:48To: Dave PageCc: pgadmin-hackersSubject: Re: [pgadmin-hackers] UpdateDave Page wrote: Say I have some code in a script that looks like: mv pgadmin3.tgz pgadmin3-${VERSION}.tgz When configure runs, it then changes that to: mv pgadmin3.tgz pgadmin3-1.1.0.tgz Rather than change it of course, it could take script.in and create script. Sure, that seems easy enough to do. The only catch would be that configure would probably have to have the version number hard-coded into it. Otherwise it shouldn't be a problem. If you give me some specifics, or just a script to start with, I'll take a crack at it. I don't have a script yet as it would mean rewriting/splitting some of them - for example the pkg/src/build-tarball script would have to be split into pre and post configure sections. Can't configure get the version number from configure.ac? Regards, Dave.
Re: [pgadmin-hackers] Update
Adam H. Pendleton wrote: Dave Page wrote: Say I have some code in a script that looks like: mv pgadmin3.tgz pgadmin3-${VERSION}.tgz When configure runs, it then changes that to: mv pgadmin3.tgz pgadmin3-1.1.0.tgz Rather than change it of course, it could take /script.in/ and create /script/. Sure, that seems easy enough to do. The only catch would be that configure would probably have to have the version number hard-coded into it. Can't we have this grep/awk-ed from version.h? I just introduced the macro VERSION_PACKAGE: grep VERSION_PACKAGE src/include/version.h | awk '{print $3}' Regards, Andreas ---(end of broadcast)--- TIP 7: don't forget to increase your free space map settings
[pgadmin-hackers] Update
Hello everyone! I've been out of town for the weekend, so I wasn't able to work on any pgAdmin stuff while I was gone. I'm going to get back into it, so I wanted to make sure that I've got everything on my to-do list: *) Fix -DSSL compilation problem *) Make static build more static *) Fix J-M's xpm include problem *) RH 7.3 SRPM building *) Mac OS X port Did I miss anything? ahp ---(end of broadcast)--- TIP 8: explain analyze is your friend