<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.guillaume.lelarge.info/index.php/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>gleu's blog - PlanetPostgreSQL</title>
  <link>http://blog.guillaume.lelarge.info/index.php/</link>
  <atom:link href="http://blog.guillaume.lelarge.info/index.php/feed/category/Planetpostgresql/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Tue, 21 May 2013 17:30:35 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>pgconf.eu 2012, a quick recap</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2012/11/01/pgconf.eu-2012%2C-a-quick-recap</link>
    <guid isPermaLink="false">urn:md5:a0ca8d60c6369b7c8639fc2b31487ac4</guid>
    <pubDate>Thu, 01 Nov 2012 18:37:00 +0100</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;One year of work, that's all it takes to build such an event. That doesn't seem a lot, but believe me, it is. And we are still working: invoices to pay, feedbacks to collect, etc. But it's worth it. It's more than simply &amp;quot;worth it&amp;quot;. Seeing so many people come and have a good time talking about &lt;a href=&quot;http://www.postgresql.org&quot; hreflang=&quot;en&quot;&gt;PostgreSQL&lt;/a&gt;, that's just awesome.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://blog.guillaume.lelarge.info/public/pgconfeu2012/prague.png&quot; title=&quot;prague.png&quot;&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgconfeu2012/.prague_m.jpg&quot; alt=&quot;prague.png&quot; title=&quot;prague.png, nov. 2012&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;I didn't see as many talks as I would have liked, but I did see some, mostly because I was a room host twice. In a weird way, the most interesting talks for me were talks from people I didn't know about before &lt;a href=&quot;http://2012.pgconf.eu/&quot; hreflang=&quot;en&quot;&gt;pgconf.eu&lt;/a&gt; and that I would have not seen if I weren't a room host. Roland Sonnenschein talked about PostgreSQL in Research &amp;amp; Development. He explained how he uses PostgreSQL in critical missions, and how he was able to sustain really big insert load with some tricks. The little tricks he gave were smart and inspiring. I hope I'll have the time to use that kind of tricks with some of my customers. PostBIS was another surprising talk with its explanation of the good and bad of the compression algorithm in PostgreSQL. Of the people I knew, the most interesting talks were from Alexey Klyukin (&amp;quot;Migrating Oracle queries to PostgreSQL&amp;quot;), Gianni Ciolli (&amp;quot;Debugging complex queries...&amp;quot;), and Hans-Jürgen Schönig (&amp;quot;Limiting PostgreSQL ressource consumption&amp;quot;). They were all inspiring, and I intend to use every bit of information when doing audits for my customers or when giving a training course on PostgreSQL.&lt;/p&gt;


&lt;p&gt;My own talk (&amp;quot;Understanding EXPLAIN and its output&amp;quot;) went pretty good, I think. The feedbacks I got were usually good. The slides and notes are available &lt;a href=&quot;http://www.dalibo.org/understanding_explain&quot; hreflang=&quot;en&quot;&gt;here&lt;/a&gt; if you're interested.&lt;/p&gt;


&lt;p&gt;Of course, pgconf.eu isn't only about talks. The hallway track is also a place to be. I had a great time meeting old-timers, but also newcomers. Meeting Joe Celko and Markus Winand (the guy behind the &lt;a href=&quot;http://use-the-index-luke.com/&quot; hreflang=&quot;en&quot;&gt;use-the-index-luke website&lt;/a&gt;, and I recommend you to &lt;a href=&quot;http://sql-performance-explained.com/&quot; hreflang=&quot;en&quot;&gt;buy and read his book&lt;/a&gt;) was great.&lt;/p&gt;


&lt;p&gt;I also went to the lightning talks. That's always a lot of fun. I can't think of anyone who could do a better job than &lt;a href=&quot;http://www.lightningtalkman.com/&quot; hreflang=&quot;en&quot;&gt;Harald Armin Massa&lt;/a&gt;. He's really the right guy to introduce the speakers in a lightning talk. Can't wait to see him next year.&lt;/p&gt;


&lt;p&gt;Well, that's it. For those who couldn't come (shame on you &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt; ), you can still read the slides on the &lt;a href=&quot;http://wiki.postgresql.org/wiki/PostgreSQL_Conference_Europe_Talks_2012&quot; hreflang=&quot;en&quot;&gt;PostgreSQL wiki&lt;/a&gt; (but sorry, no video), and mark on your calendar that another event is planned next year, in mid-october.&lt;/p&gt;


&lt;p&gt;See you all next year!&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2012/11/01/pgconf.eu-2012%2C-a-quick-recap#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2012/11/01/pgconf.eu-2012%2C-a-quick-recap#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1406</wfw:commentRss>
      </item>
    
  <item>
    <title>pgAdmin 1.16 beta 1 is out</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2012/05/17/pgAdmin-1.16-beta-1-is-out</link>
    <guid isPermaLink="false">urn:md5:dac68bc19d6dadf0347213533f9ad7f3</guid>
    <pubDate>Thu, 17 May 2012 13:46:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;At the same time &lt;a href=&quot;http://www.postgresql.org/about/news/1395/&quot; hreflang=&quot;en&quot;&gt;PostgreSQL 9.2 beta 1 was released&lt;/a&gt;, so did &lt;a href=&quot;http://archives.postgresql.org/pgsql-announce/2012-05/msg00012.php&quot; hreflang=&quot;en&quot;&gt;pgAdmin 1.16 beta 1&lt;/a&gt; (with an unfortunate copy/paste error on the URL to download beta 1).&lt;/p&gt;


&lt;p&gt;We don't have yet installers for Windows, and packages for Mac OS X. They will come at a later time.&lt;/p&gt;


&lt;p&gt;What you can expect from pgAdmin 1.16 is complete compatibility with PostgreSQL 9.2. All the new features of PostgreSQL 9.2 are handled by pgAdmin 1.16. You can use pgAdmin 1.14 with PostgreSQL 9.2, but you won't get all the new parameters, and objects. Moreover, you'll have issues with the tablespaces node (one column disappears in the pg_tablespace system catalog).&lt;/p&gt;


&lt;p&gt;One thing you shouldn't expect from pgAdmin 1.16, and I'm really sorry about that, is the database designer. This really cool tool isn't ready for prime time yet. We still need more time to fix the bugs, to make sure it's usable on every plateform, and to do all the little things that make a product great. You can still try it if you want, but you'll need to compile pgAdmin (look for the --enable-databasedesigner ./configure option).&lt;/p&gt;


&lt;p&gt;I'm working right now on a visual tour for 1.16, but it may take some time before it gets out.&lt;/p&gt;


&lt;p&gt;During the beta period, I'll also fix the bugs testers will encounter, and work on the documentation.&lt;/p&gt;


&lt;p&gt;So, as you see, still a lot of work. But don't hesitate to install pgAdmin 1.16 beta 1, search for bugs, and report them on our mailing lists, so that we can have a really great 1.16.0 release.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2012/05/17/pgAdmin-1.16-beta-1-is-out#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2012/05/17/pgAdmin-1.16-beta-1-is-out#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1401</wfw:commentRss>
      </item>
    
  <item>
    <title>Profiling PL/pgsql functions</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2012/03/31/Profiling-PL/pgsql-functions</link>
    <guid isPermaLink="false">urn:md5:f79ba8d8b88b47ce3aae6b02b182e992</guid>
    <pubDate>Sat, 31 Mar 2012 14:43:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;I spent my whole week trying to fix &lt;a href=&quot;http://www.postgresql.org/docs/9.1/interactive/plpgsql.html&quot; hreflang=&quot;en&quot;&gt;PL/pgsql&lt;/a&gt; functions. More to the point, I tried to make them perform better. My customer complains that they aren't fast enough, and I agree with him: some of his PL/pgsql functions are really slow. Unfortunately, he uses a lot of PL/pgsql functions. One function may call many other functions, and it's hard to tell which one is the culprit (if there is only one).&lt;/p&gt;


&lt;p&gt;My first step was to use &lt;a href=&quot;http://pgfouine.projects.postgresql.org/&quot; hreflang=&quot;en&quot;&gt;pgFouine&lt;/a&gt; on a three-days log to know which queries are really slow on his system. Three queries stood out as being the real offenders. I tried to &lt;a href=&quot;http://www.postgresql.org/docs/9.1/interactive/sql-explain.html&quot; hreflang=&quot;en&quot;&gt;EXPLAIN ANALYZE&lt;/a&gt; them, but found that these queries involved lots of views and functions. Not really easy queries to fix. So I set &lt;a href=&quot;http://www.postgresql.org/docs/9.1/interactive/runtime-config-statistics.html#GUC-TRACK-FUNCTIONS&quot; hreflang=&quot;en&quot;&gt;track_functions&lt;/a&gt; to pl, so that I can see which functions were called by one query, and which functions are the really offending ones. Here is the result I got:&lt;/p&gt;

&lt;pre&gt;
b1=# SELECT funcname, calls, total_time, self_time
b1-# FROM pg_stat_user_functions;
 funcname  | calls  | total_time | self_time 
-----------+--------+------------+-----------
 f0        |      1 |     328486 |      1375
 f1        |      1 |        210 |       210
 f2        |      1 |        123 |       123
 f3        |      1 |      20310 |     20310
 f4        |      1 |        763 |       763
 f51       |      1 |      33486 |     33486
 f52       |      1 |     250363 |    239703
 f53       |      1 |      19139 |     19139
 f6        |      1 |        399 |       399
 f7        |      1 |       1770 |      1770
 f8        |      1 |        543 |       543
 f_compute | 110588 |      10660 |     10660
(12 rows)
&lt;/pre&gt;


&lt;p&gt;Some context first, I only executed f0(), which itself called all the other functions. So what do I get from this? f_compute() is executed 110588 times. That's a lot, but it doesn't consume much of f0() execution time (3%). f52() is only executed once, but took 76% of the total execution time of f0(). If I can make it run faster, I would probably gain a lot.&lt;/p&gt;


&lt;p&gt;But there's more. f52() executes other functions, but its own execution took most of the time (95%). So what I really need to know is how long each of its statements last. There's not many way to know that actually. You can modify the function source code to add &lt;a href=&quot;http://www.postgresql.org/docs/9.1/interactive/plpgsql-errors-and-messages.html&quot; hreflang=&quot;en&quot;&gt;RAISE LOG&lt;/a&gt; statements in this function (you can find many examples on this &lt;a href=&quot;http://www.depesz.com/2010/03/18/profiling-stored-proceduresfunctions/&quot; hreflang=&quot;en&quot;&gt;depesz's post&lt;/a&gt;). It takes a lot of time to do that, you may do it wrong, you cannot always do it. You can also use the &lt;a href=&quot;http://pgfoundry.org/projects/edb-debugger/&quot; hreflang=&quot;en&quot;&gt;plprofiler&lt;/a&gt; from &lt;a href=&quot;http://enterprisedb.com/&quot; hreflang=&quot;en&quot;&gt;EnterpriseDB&lt;/a&gt;. That's the first thing I did. Due to the number of statements in each of the functions the query called, my query went from 5.4 minutes to more than two hours of execution time. I canceled it because I couldn't wait any longer. The only thing left was to modify the function source code, but I really hate this idea.&lt;/p&gt;


&lt;p&gt;So I read the &lt;a href=&quot;http://cvs.pgfoundry.org/cgi-bin/cvsweb.cgi/edb-debugger/server/plugin_profiler.c?rev=1.9&amp;amp;content-type=text/x-cvsweb-markup&quot; hreflang=&quot;en&quot;&gt;plprofiler code&lt;/a&gt;, and found a better way to do it. The plprofiler is a shared library that uses hooks inside the PL/pgsql interpreter to grab lots of information for each statement of each executed function. I only had to change the code to make it less a burden on my system. All I wanted was to get a line in the PostgreSQL log files when a function starts, when it ends, and when a function's statement is executed. It turns out that it's actually quite easy to do. You can find the code on the &lt;a href=&quot;https://github.com/gleu/log_functions&quot; hreflang=&quot;en&quot;&gt;log_functions github page&lt;/a&gt;. After compilation, installation, and configuration of this tool, and then the execution of the query, I got this log (somewhat edited to make it fit better on this blog post):&lt;/p&gt;

&lt;pre&gt;
10:56:24 LOG:  log_functions, DECLARE, f52
10:56:24 LOG:  log_functions, BEGIN, f52
10:56:24 LOG:  log_functions, STMT, line 7, type 14
10:56:24 LOG:  log_functions, STMT, line 14, type 14
10:56:24 LOG:  log_functions, STMT, line 23, type 14
10:56:24 LOG:  log_functions, STMT, line 32, type 14
10:56:24 LOG:  log_functions, STMT, line 41, type 14
10:56:24 LOG:  log_functions, STMT, line 52, type 14
10:56:24 LOG:  log_functions, STMT, line 75, type 14
11:00:14 LOG:  log_functions, STMT, line 99, type 14
11:00:14 LOG:  log_functions, STMT, line 110, type 14
11:00:14 LOG:  log_functions, STMT, line 122, type 14
11:00:14 LOG:  log_functions, STMT, line 133, type 14
11:00:14 LOG:  log_functions, STMT, line 145, type 14
11:00:14 LOG:  log_functions, STMT, line 156, type 14
11:00:14 LOG:  log_functions, STMT, line 168, type 14
11:00:14 LOG:  log_functions, STMT, line 179, type 14
11:00:14 LOG:  log_functions, STMT, line 191, type 14
11:00:14 LOG:  log_functions, STMT, line 202, type 14
11:00:14 LOG:  log_functions, STMT, line 214, type 14
11:00:14 LOG:  log_functions, STMT, line 225, type 14
11:00:14 LOG:  log_functions, STMT, line 237, type 14
11:00:14 LOG:  log_functions, STMT, line 248, type 14
11:00:14 LOG:  log_functions, STMT, line 260, type 14
11:00:14 LOG:  log_functions, STMT, line 271, type 14
11:00:14 LOG:  log_functions, STMT, line 283, type 14
11:00:14 LOG:  log_functions, STMT, line 294, type 14
11:00:14 LOG:  log_functions, STMT, line 304, type 14
11:00:14 LOG:  log_functions, STMT, line 306, type 13
11:00:14 LOG:  log_functions, STMT, line 308, type 10
11:00:14 LOG:  log_functions, END, f52
&lt;/pre&gt;


&lt;p&gt;I also got lucky here. All the time spent on this function is spent on the statement in line 75. So what I really need to know is why it takes so long to do this query. The search of performance for this query is not really relevant for this blog post. I only wanted to show how you can profile a PL/pgsql function easily without changing its source code.&lt;/p&gt;


&lt;p&gt;As I think it may be a useful tool for many people, it's available on my &lt;a href=&quot;https://github.com/gleu/&quot; hreflang=&quot;en&quot;&gt;github page&lt;/a&gt;, and on &lt;a href=&quot;http://www.pgxn.org/dist/log_functions/&quot; hreflang=&quot;en&quot;&gt;pgxn&lt;/a&gt;. Hope it can help people profiling their PL/pgsql functions.&lt;/p&gt;


&lt;p&gt;To end this blog post, know that there are many things one can do with hooks in PostgreSQL. This is just one of them. I already explained &lt;a href=&quot;http://blog.guillaume.lelarge.info/index.php/post/2011/10/29/How-to-log-superuser-queries&quot; hreflang=&quot;en&quot;&gt;how you can use another one to log only superuser queries&lt;/a&gt;. This new one will totally fit in with my &lt;a href=&quot;http://www.pgcon.org/2012/schedule/events/466.en.html&quot; hreflang=&quot;en&quot;&gt;talk on hooks at PGCon 2012&lt;/a&gt; &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2012/03/31/Profiling-PL/pgsql-functions#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2012/03/31/Profiling-PL/pgsql-functions#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1399</wfw:commentRss>
      </item>
    
  <item>
    <title>pgAdmin and wxWidgets 2.9</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2012/03/10/pgAdmin-and-wxWidgets-2.9</link>
    <guid isPermaLink="false">urn:md5:2d3b3fdc1b0c1a5eca7d7c4525dad4a2</guid>
    <pubDate>Sat, 10 Mar 2012 23:35:00 +0100</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;&lt;a href=&quot;http://www.pgadmin.org&quot; hreflang=&quot;en&quot;&gt;pgAdmin&lt;/a&gt; is a multiplatform tool. This means that you can use it on various operating systems, such as Windows, Mac OS X, Linux, and even Solaris. Not sure if that last one is still supported. To be honest, I write bugfixes and new features on my Linux laptop (Fedora 16), and checks them, whenever I can, on Mac OS X (Snow Leopard, on my old Mac Mini) and Windows (XP, still on the old Mac Mini). We use &lt;a href=&quot;http://www.wxwidgets.org&quot; hreflang=&quot;en&quot;&gt;wxWidgets&lt;/a&gt; to make it easier to code user interfaces for all platforms. pgAdmin supports wxWidgets 2.8. The developers of wxWidgets are working hard on the next big release, 3.0. To ease the jump, they have a 2.9 release since quite some time. This 2.9 version will become 3.0 &amp;quot;when it's ready&amp;quot;.&lt;/p&gt;


&lt;p&gt;I'm really happy to see that we are now compatible with 2.9. There are probably still some itches to fix, but it's already quite usable.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://pgeoghegan.blogspot.com/&quot; hreflang=&quot;en&quot;&gt;Peter Geoghegan&lt;/a&gt; was the first one to work on this, and wrote a big patch, that &lt;a href=&quot;http://pgsnake.blogspot.com/&quot; hreflang=&quot;en&quot;&gt;Dave Page&lt;/a&gt; applied on 2011-02-01. There were a few fixes here, and there. The second phase, done by Peter, was the merge of the wxOGL contrib into our source tree (we had the author's permission for that). And then another bunch of fixes, mostly from reports sent by Colin Beckingham, and fixed by me.&lt;/p&gt;


&lt;p&gt;Right now, I have something that works great on Linux.&lt;/p&gt;


&lt;p&gt;Why is it important? because it offers a better support of new features of the operating systems, and it fixes a lot of issues we had previously with wxWidgets 2.8 that the developers of wxWidgets couldn't fix (either because it would require too much changes, or because they don't have the manpower to do it). 2.9 also adds some widgets that we would definitely love to use :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a property grid ;&lt;/li&gt;
&lt;li&gt;a list control with a tree in the first column (to display tree where each item has informations to display in columns) ;&lt;/li&gt;
&lt;li&gt;a native calendar control for Linux (the previous one is a wxWidgets custom control, and is not really usable) ;&lt;/li&gt;
&lt;li&gt;a tree control with checkbox (we have that via a custom widget, one that we could get rid of... remember, less code is good) ;&lt;/li&gt;
&lt;li&gt;and probably many other interesting enhancements (for example, support for GTK3 would make my day).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can test pgAdmin 1.15 with wxWidgets 2.9, please send any issues to &lt;a href=&quot;http://archives.postgresql.org/pgadmin-hackers/&quot; hreflang=&quot;en&quot;&gt;pgadmin-hackers&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2012/03/10/pgAdmin-and-wxWidgets-2.9#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2012/03/10/pgAdmin-and-wxWidgets-2.9#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1398</wfw:commentRss>
      </item>
    
  <item>
    <title>An import tool for pgAdmin</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2012/02/25/An-import-tool-for-pgAdmin</link>
    <guid isPermaLink="false">urn:md5:d0f78038a556926c9cfbd0858d4c3cdc</guid>
    <pubDate>Sat, 25 Feb 2012 00:47:00 +0100</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;With pgAdmin 1.14 and prior releases, there were only two ways to insert data in a table:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;use the restore tool (which uses pg_restore) ;&lt;/li&gt;
&lt;li&gt;use the query tool to execute INSERT queries (COPY queries are allowed if they use a file, but not stdin/stdout).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There was no way to ask it to import a CSV file for example. And a thread began on this matter a week ago. As working on the COPY API of libpq was quite motivating, I worked on this a few hours, and finished yesterday with &lt;a href=&quot;http://git.postgresql.org/gitweb/?p=pgadmin3.git;a=commit;h=4d68fd1b46f7029545ba7bc9e89dc7bc6458289b&quot; hreflang=&quot;en&quot;&gt;this patch&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;This patch adds a new window that allows a user to choose a file, and to select all options available in the COPY command (but only options available for import, not export).&lt;/p&gt;


&lt;p&gt;This window is displayed when someone selects the &amp;quot;Import&amp;quot; item in the table's contextual menu, as shown in the following screenshot:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.importmenu_m.jpg&quot; alt=&quot;importmenu.png&quot; title=&quot;importmenu.png, fév. 2012&quot; /&gt;&lt;/p&gt;


&lt;p&gt;The import window has 5 tabs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&amp;quot;File options&amp;quot; tab makes possible to choose a file, sets its format (text, CSV, or binary), and optionaly its encoding.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.import_win_1_m.jpg&quot; alt=&quot;import_win_1.png&quot; title=&quot;import_win_1.png, fév. 2012&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&amp;quot;Columns&amp;quot; tab allows the user to specify which columns are contained in the file. Right now, they must be in the same order than the table (because of the UI), but they don't have to be all present in the file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.import_win_2_m.jpg&quot; alt=&quot;import_win_2.png&quot; title=&quot;import_win_2.png, fév. 2012&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&amp;quot;Misc Options&amp;quot;, &amp;quot;Quote Options&amp;quot;, and &amp;quot;NULL options&amp;quot; tabs are not used usually, but it could be handy to set another delimiter than the usual comma, amongs other possibilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.import_win_3_m.jpg&quot; alt=&quot;import_win_3.png&quot; title=&quot;import_win_3.png, fév. 2012&quot; /&gt;
&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.import_win_4_m.jpg&quot; alt=&quot;import_win_4.png&quot; title=&quot;import_win_4.png, fév. 2012&quot; /&gt;
&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.import_win_5_m.jpg&quot; alt=&quot;import_win_5.png&quot; title=&quot;import_win_5.png, fév. 2012&quot; /&gt;&lt;/p&gt;


&lt;p&gt;When the user clicks the &amp;quot;Import&amp;quot; button, pgAdmin launches a COPY query that matches the selected options, and sends the file by chunks of 8KB. The scrollbar shows the progress of the import. If the import ends with success, the &amp;quot;Import&amp;quot; button is renamed &amp;quot;Done&amp;quot;, and a click on it closes the dialog.&lt;/p&gt;


&lt;p&gt;That was a really interesting patch to write, for the UI, and the COPY API. And it is a quite nice feature for pgAdmin.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2012/02/25/An-import-tool-for-pgAdmin#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2012/02/25/An-import-tool-for-pgAdmin#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1397</wfw:commentRss>
      </item>
    
  <item>
    <title>How to log superuser queries</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2011/10/29/How-to-log-superuser-queries</link>
    <guid isPermaLink="false">urn:md5:cca36a48909ca807838ebafe4ecec9d0</guid>
    <pubDate>Sat, 29 Oct 2011 16:31:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;A few weeks ago, one of my customers asked me if they could log all queries coming from superuser users. They have to make sure that none of their DBA could fire a query without that query being logged.&lt;/p&gt;


&lt;p&gt;You can already log queries with the log_statement, or log_min_duration_statement GUCs. You can set these GUCs cluster-wide or for specific users. But there's a big issue here: the user can change the value of these GUCs, making it impossible to be sure everything they do is logged.&lt;/p&gt;


&lt;p&gt;I first thought of writing a patch to handle this in PostgreSQL, but it also has a major issue: it won't be available for 9.0, the release they use. All new features are added to the development release, and I don't want to maintain a custom PostgreSQL release for anyone (that's too much burden). So, I came up with a nicer way of doing it.&lt;/p&gt;


&lt;p&gt;PostgreSQL allows you to add hooks to the executor since 8.4. And you can use these hooks to know which queries are executed and by who. Actually, that's how &lt;a href=&quot;http://www.postgresql.org/docs/9.1/interactive/pgstatstatements.html&quot; hreflang=&quot;en&quot;&gt;pg_stat_statements&lt;/a&gt; works. So, all I needed to do was to create a small shared library that will add hooks to the executor. The hooks will check that the user executing a query is a superuser, and if that's true, log the query. Quite simple, here is the code of the hook:&lt;/p&gt;

&lt;pre&gt;
static void
pgluq_log(const char *query)
{
    Assert(query != NULL);

    if (superuser())
        elog(log_level, &amp;quot;%s %s: %s&amp;quot;, log_label, GetUserNameFromId(GetUserId()), query);
}
&lt;/pre&gt;


&lt;p&gt;Of course, the library has more code than just that: to add/remove the hooks, to take care of two module GUCs (log level, and log prefix), but the most important stuff is on the pglug_log() function.&lt;/p&gt;


&lt;p&gt;The module is available right now on &lt;a href=&quot;https://github.com/gleu/pg_log_userqueries&quot; hreflang=&quot;en&quot;&gt;github&lt;/a&gt;, and I intend to publish it via the &lt;a href=&quot;http://pgxn.org&quot; hreflang=&quot;en&quot;&gt;pgxn.org&lt;/a&gt; website once my account will be approved. Docs are available &lt;a href=&quot;https://github.com/gleu/pg_log_userqueries/wiki/pg_log_userqueries&quot; hreflang=&quot;en&quot;&gt;here&lt;/a&gt;. It's compatible with PostgreSQL 8.4, 9.0, and 9.1.&lt;/p&gt;


&lt;p&gt;Next thing I will do for this module is to add support for syslog. Right now, it only logs to the same location than PostgreSQL.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2011/10/29/How-to-log-superuser-queries#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2011/10/29/How-to-log-superuser-queries#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1394</wfw:commentRss>
      </item>
    
  <item>
    <title>Follow-up on pgconf.eu 2011</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2011/10/24/Follow-up-on-pgconf.eu-2011</link>
    <guid isPermaLink="false">urn:md5:af283907ed4a5057cba40f5a94320c8c</guid>
    <pubDate>Mon, 24 Oct 2011 14:21:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;Just got an email asking me where we did put the slides of the talks. As they are a bit difficult to find, here is the URL:  &lt;a href=&quot;http://wiki.postgresql.org/wiki/PostgreSQL_Conference_Europe_Talks_2011&quot; hreflang=&quot;en&quot;&gt;http://wiki.postgresql.org/wiki/PostgreSQL_Conference_Europe_Talks_2011&lt;/a&gt;. Unfortunately, you won't find every speaker's slides yet. And for the record, I fixed my slides (two SQL statements were wrong... kinda lame of me).&lt;/p&gt;


&lt;p&gt;I guess we should have the room host collects them at the end of each talk. That's something I expect us to do next year.&lt;/p&gt;


&lt;p&gt;BTW, attendees, I don't know if you've all already done that, but remember that you can add feedbacks for the event itself and for each of the talks you've attended. Here is the webpage to do that: &lt;a href=&quot;http://2011.pgconf.eu/feedback/&quot; hreflang=&quot;en&quot;&gt;http://2011.pgconf.eu/feedback/&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2011/10/24/Follow-up-on-pgconf.eu-2011#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2011/10/24/Follow-up-on-pgconf.eu-2011#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1392</wfw:commentRss>
      </item>
    
  <item>
    <title>End of pgAdmin's GSoC 2011</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2011/09/11/End-of-pgAdmin-s-GSoC-2011</link>
    <guid isPermaLink="false">urn:md5:a05b105ef8255525f63bd23b29f230d1</guid>
    <pubDate>Sun, 11 Sep 2011 00:48:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;Luis Ochoa sent me his latest patch some time ago. It took me a while to find some time to review his patch, to fix a few bugs, but I finally did it. And I applied the resulting patch this afternoon.&lt;/p&gt;


&lt;p&gt;What we now have is really awesome: reverse engineering of an existing schema. Even more, we can build an SQL script to create the reversed model or only apply the changes between the model and a selected database. It could be another database than the one used for the reverse engineering. One simple example to show its power. You can reverse engineer your schema on your development database, connect to your production database and ask the database designer to build the script that will contain only the SQL to push the definition changes.&lt;/p&gt;


&lt;p&gt;Of course, right now, the code is probably quite buggy. And it lacks a lot of features. First one would be a better datatype support. Only a few types are accepted right now. User defined types aren't obviously but also some uncommon types (like tsvector), and common ones (timestamp with timezone for example). Also lacking is a support of all the table properties (fillfactor, autovacuum settings are part of the missing ones).&lt;/p&gt;


&lt;p&gt;If you want to take a look, you should probably see the &lt;a href=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/dd1.ogv&quot;&gt;video attached to this blogpost&lt;/a&gt;. You'll see how the database designer works with the pagila database (I fixed a few types in the schema to show a better demo but that's the only changes I made).&lt;/p&gt;


&lt;p&gt;If you want to see it live, maybe you should come to &lt;a href=&quot;http://2011.pgconf.eu&quot; hreflang=&quot;en&quot;&gt;pgconf.eu in Amsterdam&lt;/a&gt;. &lt;a href=&quot;http://www.postgresql.eu/events/sessions/pgconfeu2011/session/126-relational-database-designer-for-pgadmin/&quot; hreflang=&quot;en&quot;&gt;Luis Ochoa and I will be presenting this tool&lt;/a&gt;, do some demos, and wait for suggestions, and feature requests.&lt;/p&gt;</description>
    
          <enclosure url="http://blog.guillaume.lelarge.info/public/pgadmin_1.15/dd1.ogv"
      length="20927084" type="video/ogg" />
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2011/09/11/End-of-pgAdmin-s-GSoC-2011#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2011/09/11/End-of-pgAdmin-s-GSoC-2011#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1383</wfw:commentRss>
      </item>
    
  <item>
    <title>Wanna help us adding new features to pgAdmin?</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2011/09/03/Wanna-help-us-adding-new-features-to-pgAdmin</link>
    <guid isPermaLink="false">urn:md5:b1bfb406806ff31b56a538f5925a11d7</guid>
    <pubDate>Sat, 03 Sep 2011 22:54:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;And you don't know how to start? I've been there when I first worked on &lt;a href=&quot;http://www.pgadmin.org&quot; hreflang=&quot;en&quot;&gt;pgAdmin&lt;/a&gt;'s source code. You need to understand pgAdmin's code, and you need to know &lt;a href=&quot;http://www.wxwidgets.org/&quot; hreflang=&quot;en&quot;&gt;wxWidgets&lt;/a&gt;. And &lt;a href=&quot;http://www.postgresql.org&quot; hreflang=&quot;en&quot;&gt;PostgreSQL&lt;/a&gt; of course. Trust me, it takes quite some time to feel confident.&lt;/p&gt;


&lt;p&gt;But there are a few things you can do to help us in our coding department. There are some little features, eagerly waited by some of our users, that are quite easy to code and that could help you start coding on pgAdmin. We have a list of feature requests on &lt;a href=&quot;http://code.pgadmin.org&quot; hreflang=&quot;en&quot;&gt;http://code.pgadmin.org&lt;/a&gt; and I spent some time this evening to add a juniorjob tag to each easy-to-code feature. If you're interested, you should get a look at this &lt;a href=&quot;http://code.pgadmin.org/trac/query?keywords=~juniorjob&quot; hreflang=&quot;en&quot;&gt;junior job list&lt;/a&gt;. It would really help us to have some people working on these tickets.&lt;/p&gt;


&lt;p&gt;And if you don't want to work on C++ code, you can still help us with the documentation. We'll try to have a complete new manual for 1.16, but we need help to write it. We also badly need translators.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2011/09/03/Wanna-help-us-adding-new-features-to-pgAdmin#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2011/09/03/Wanna-help-us-adding-new-features-to-pgAdmin#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1382</wfw:commentRss>
      </item>
    
  <item>
    <title>Last month work on pgAdmin</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2011/08/19/Last-month-work-on-pgAdmin</link>
    <guid isPermaLink="false">urn:md5:fda379c5f11968e855282f9d03c97544</guid>
    <pubDate>Fri, 19 Aug 2011 23:17:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;Yeah, my last blog post on pgAdmin is a month old. Time to give you some news.&lt;/p&gt;


&lt;p&gt;Let's begin with PostgreSQL compatibility. 1.14 won't handle security labels. We haven't find time to add support for that. Good news is that 1.16 will. We already have that in git. Here is how it looks on a table:&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/seclabels1.png&quot;&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.seclabels1_m.jpg&quot; alt=&quot;X&quot; title=&quot;seclabels1.png, août 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;See the new &amp;quot;Security labels&amp;quot; tab? that's it. A better news is that we already support security labels on shared objects (I mean databases, tablespaces, and roles). And that's a 9.2 new feature.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/seclabels2.png&quot;&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.seclabels2_m.jpg&quot; alt=&quot;X&quot; title=&quot;seclabels2.png, août 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Speaking of 9.2, we also added support for invalid domains and invalid check constraints.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/invaliddomain.png&quot; title=&quot;invaliddomain.png&quot;&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.invaliddomain_m.jpg&quot; alt=&quot;invaliddomain.png&quot; title=&quot;invaliddomain.png, août 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;The user can create these objects without the validate step; They can validate them later.&lt;/p&gt;


&lt;p&gt;I think that's about it on PostgreSQL compatibility.&lt;/p&gt;


&lt;p&gt;I know pgAdmin for quite a long time, and I've often been bitten by this old bug: open a property dialog, refresh the object on the browser, change the object in the property dialog... and crash. This shouldn't happen again. Once a property dialog is open for an object, the user can't refresh the object or any of its parents. He cannot either drop the object or any of its parents. And he cannot close the connection. Till he closes the property dialog. I'm really glad we finally put an end to this bug. Unfortunately, it's rather a big change in behaviour, so it won't be backpatched.&lt;/p&gt;


&lt;p&gt;Luis Ochoa continued his work on his 2011 GSoC project (the database designer). He added load/save support. Files are in XML format, and have a .pgd extension. He also added multimodel diagram, so that the user can view his schema in different ways. Here are two views of the same design:&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/dd1.png&quot;&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.dd1_m.jpg&quot; alt=&quot;X&quot; title=&quot;dd1.png, août 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/dd2.png&quot;&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.dd2_m.jpg&quot; alt=&quot;X&quot; title=&quot;dd2.png, août 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;And last, we redesigned the options window, so that we could put more options without making the dialog bigger. It follows what LibreOffice and other programs are already doing:&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/options.png&quot;&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.options_m.jpg&quot; alt=&quot;X&quot; title=&quot;options.png, août 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;So, despite the summer vacations, we're still going forward and at a good pace.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2011/08/19/Last-month-work-on-pgAdmin#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2011/08/19/Last-month-work-on-pgAdmin#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1381</wfw:commentRss>
      </item>
    
  <item>
    <title>Allow change of a schema using pgAdmin's GUI</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2011/07/18/Allow-change-of-a-schema-using-pgAdmin-s-GUI</link>
    <guid isPermaLink="false">urn:md5:f9d30254f9a7da57abb974e67aad6b2b</guid>
    <pubDate>Mon, 18 Jul 2011 23:16:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;That's something I wanted to do for quite some time, and Thom Brown beats me to it. He added a &amp;quot;Schema&amp;quot; combobox in each object that's part of a schema. For example, on a sequence, you'll get this:&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/sequence.png&quot; title=&quot;sequence.png&quot;&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.sequence_m.jpg&quot; alt=&quot;sequence.png&quot; title=&quot;sequence.png, juil. 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Before this patch, the user needed to execute the &amp;quot;ALTER SEQUENCE... SET SCHEMA&amp;quot; in the query tool, switch back to the browser, and refresh it. Now, it only has to get into the properties dialog of the sequence, select the right schema in the combobox, and click on the &amp;quot;OK&amp;quot; button. Much simpler.&lt;/p&gt;


&lt;p&gt;Of course, it works with all objects you can find in a schema.&lt;/p&gt;


&lt;p&gt;Thanks, Thom.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2011/07/18/Allow-change-of-a-schema-using-pgAdmin-s-GUI#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2011/07/18/Allow-change-of-a-schema-using-pgAdmin-s-GUI#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1378</wfw:commentRss>
      </item>
    
  <item>
    <title>Nice talks at char(11)</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2011/07/14/Nice-talks-at-char%2811%29</link>
    <guid isPermaLink="false">urn:md5:a2ab6b36ff388a7197a61f3f68031f9e</guid>
    <pubDate>Thu, 14 Jul 2011 09:47:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;As &lt;a href=&quot;http://tapoueh.org/blog/2011/07/13-back-from-char11.html&quot; hreflang=&quot;en&quot;&gt;Dimitri&lt;/a&gt; already said, &lt;a href=&quot;http://char11.org/schedule&quot; hreflang=&quot;en&quot;&gt;char(11)&lt;/a&gt; is over. This was my first time at this event, and I don't regret it. The talks were mostly great. My favorites were Jan's talk on the evolution of replication, Magnus's talk on the replication protocol, and Simon's talk on the replication features in core. The GreenPlum talks were also really interesting to me because there's not much information out there on the internet about that fork and finally getting some informations feels good.&lt;/p&gt;


&lt;p&gt;Oh, and &lt;a href=&quot;http://2ndquadrant.blogspot.com/&quot; hreflang=&quot;en&quot;&gt;Harald&lt;/a&gt; has been a huge room host, really dedicated to his work. So, congrats to him too.&lt;/p&gt;


&lt;p&gt;Well done, 2ndQuadrant guys. Hope there will be a char(12) next year. (And don't forget to add the talks' slides on a website so that we could have another look at them. Thanks &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt; )&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2011/07/14/Nice-talks-at-char%2811%29#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2011/07/14/Nice-talks-at-char%2811%29#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1377</wfw:commentRss>
      </item>
    
  <item>
    <title>Search Object tool in pgAdmin</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2011/07/06/Search-Object-tool-in-pgAdmin</link>
    <guid isPermaLink="false">urn:md5:93b3de16eaf2a4d16a2e24c6da4e723f</guid>
    <pubDate>Wed, 06 Jul 2011 23:30:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;Something was missing in pgAdmin, something I didn't believe at first. Jasmin Dizdarevic came up some (long) time ago with a patch implementing a Search Object tool. After lots of discussion, I commited the final patch.&lt;/p&gt;


&lt;p&gt;The contextual menu of each database contains a new menu item: &amp;quot;Search objects...&amp;quot;.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/menu.png&quot; title=&quot;menu.png&quot;&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.menu_m.jpg&quot; alt=&quot;menu.png&quot; title=&quot;menu.png, juil. 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;When you select this item, it'll open a new window asking you to enter a name pattern, and press the &amp;quot;Find&amp;quot; button. Once you've done that, pgAdmin will search each object whose name contains the pattern. It'll will display each object found in the results list.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/searchobject_tool.png&quot; title=&quot;searchobject_tool.png&quot;&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/pgadmin_1.15/.searchobject_tool_m.jpg&quot; alt=&quot;searchobject_tool.png&quot; title=&quot;searchobject_tool.png, juil. 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;When you click on one of the results, it will select the object in the browser.&lt;/p&gt;


&lt;p&gt;Quite impressive feature if you ask me, and, sure, one that was missing. There are probably a few more tweaks that could be interesting to enhance this feature (like search in the comments, and objects's icons in the results list). What's great is that we still have plenty of time to do that &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Anyway, thanks a lot to Jasmin Dizdarevic!&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2011/07/06/Search-Object-tool-in-pgAdmin#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2011/07/06/Search-Object-tool-in-pgAdmin#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1372</wfw:commentRss>
      </item>
    
  <item>
    <title>Database Designer is finally in</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2011/06/27/Database-Designer-is-finally-in</link>
    <guid isPermaLink="false">urn:md5:2bc3af9e7e9f4bae108a1f0e6e1d977f</guid>
    <pubDate>Mon, 27 Jun 2011 23:40:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;I commited it this morning. First part of Luis's GSoC project this year is now commited. pgAdmin has a graphical database designer. It's not pretty yet, it doesn't have all features I would love to see implemented, so it's rather raw. But it's there. And we can build something great with this.&lt;/p&gt;


&lt;p&gt;Here is what I just did with it.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://blog.guillaume.lelarge.info/public/dd.png&quot; title=&quot;dd.png&quot;&gt;&lt;img src=&quot;http://blog.guillaume.lelarge.info/public/.dd_m.jpg&quot; alt=&quot;dd.png&quot; title=&quot;dd.png, juin 2011&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;I'll try to find a way to record a session of work with the database designer.&lt;/p&gt;


&lt;p&gt;Anyway, it's available in the master branch of pgAdmin's GIT repository (http://git.postgresql.org/gitweb?p=pgadmin3.git;a=summary). Go grab it, and tell us what you think of it (but keep in mind it's its early stage &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt; ).&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2011/06/27/Database-Designer-is-finally-in#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2011/06/27/Database-Designer-is-finally-in#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1370</wfw:commentRss>
      </item>
    
  <item>
    <title>pgAdmin 1.14 beta 1 available</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2011/05/03/pgAdmin-1.14-beta-1-available</link>
    <guid isPermaLink="false">urn:md5:4823d53940a37732f3536cbb8fa3b343</guid>
    <pubDate>Tue, 03 May 2011 23:43:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;pgAdmin v1.14.0 Beta 1 is now available for testing purpose. You can grab a copy (source or binary) on &lt;a href=&quot;http://www.postgresql.org/ftp/pgadmin3/release/v1.14.0-beta1/&quot; hreflang=&quot;en&quot;&gt;http://www.postgresql.org/ftp/pgadmin3/release/v1.14.0-beta1/&lt;/a&gt; .&lt;/p&gt;


&lt;p&gt;There are many new features in this release. Not as many as I would have liked, but still. There are plenty new things I'm sure you'll like.&lt;/p&gt;


&lt;p&gt;Of course, PostgreSQL 9.1 support was our first goal. And it seems we did pretty well on this one. The only thing left out, IIRC, is the security labels. All the other new objects are handled: collation, extension, foreign table. Some old objects are finally available: the SQL/Med ones of course, but also the exclusion constraint and the constraint trigger.&lt;/p&gt;


&lt;p&gt;We try to make the UI better too. All windows should work on a 800x600 screen. Even if I'm not sure people still use such small screens.&lt;/p&gt;


&lt;p&gt;I'm sorry we still don't have the now usual visual tour. I wrote it last week-end, but it still needs a review of an english native speaker.&lt;/p&gt;


&lt;p&gt;Of course, we still find bugs. We already fixed a few. For example, Thom Brown found a lot of issues in the foreign table support. They are fixed. There was a segfault on the property dialog for the index. Fixed too. I also fixed some issues on the DDL for permissions, a bug found by Erwin Brandstetter.&lt;/p&gt;


&lt;p&gt;All this means we really need you to test this beta release, and send us (on &lt;a href=&quot;http://archives.postgresql.org/pgadmin-support/&quot; hreflang=&quot;en&quot;&gt;pgadmin-support&lt;/a&gt; mailing list for example) the bugs you found, so that we could get rid of them for the final release.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2011/05/03/pgAdmin-1.14-beta-1-available#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2011/05/03/pgAdmin-1.14-beta-1-available#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1365</wfw:commentRss>
      </item>
    
  <item>
    <title>GSoC project &quot;Development of improvements in pgAdmin physical database designer module&quot; accepted</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2011/05/03/GSoC-project-Development-of-improvements-in-pgAdmin-physical-database-designer-module-accepted</link>
    <guid isPermaLink="false">urn:md5:78c3c119d413ca1f98db05f7fadc4c77</guid>
    <pubDate>Tue, 03 May 2011 22:55:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;I'm a bit late to announce it, but Luis's project has been accepted.&lt;/p&gt;


&lt;p&gt;Last year, he worked on a database designer. We had something nearly working. Still a few bugs here and there, and quite a lot of cleaning to do. I did some, but didn't had the time to do much of it. So we won't have that for the next release of pgAdmin.&lt;/p&gt;


&lt;p&gt;But the good news is that Luis is back. The first part of this project is to clean and debug his code. That should be done in early june. We'll have a commitable patch then. Something I'll commit with pleasure &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Then, his main work will be to add more, and more features to the database designer.&lt;/p&gt;


&lt;p&gt;This will be a really interesting summer &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2011/05/03/GSoC-project-Development-of-improvements-in-pgAdmin-physical-database-designer-module-accepted#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2011/05/03/GSoC-project-Development-of-improvements-in-pgAdmin-physical-database-designer-module-accepted#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1364</wfw:commentRss>
      </item>
    
  <item>
    <title>pgAdmin 1.12.3 available...</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2011/04/30/pgAdmin-1.12.3-available...</link>
    <guid isPermaLink="false">urn:md5:8e29ed9678e63d51799a968c9f8ae3ed</guid>
    <pubDate>Sat, 30 Apr 2011 09:17:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;... since 2011-04-18. I guess we're not good at announcing things &lt;img src=&quot;/themes/default/smilies/confused.png&quot; alt=&quot;:-/&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;This bugfix release is a long awaited one. We missed to get one out when PostgreSQL 9.0.3 went out. So, this release contains a lot of bugfixes (26). The complete list is available in the &lt;a href=&quot;http://www.pgadmin.org/development/changelog.php&quot; hreflang=&quot;en&quot;&gt;changelog&lt;/a&gt;. The most interesting patch fixes the issue when a user tried to dump a database whose name is in mixed case. That one was asked so many time, it is just great the release having the fix is finally out.&lt;/p&gt;


&lt;p&gt;And while I'm blogging, remember that pgAdmin 1.14 beta 1 will be out next week.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2011/04/30/pgAdmin-1.12.3-available...#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2011/04/30/pgAdmin-1.12.3-available...#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1362</wfw:commentRss>
      </item>
    
  <item>
    <title>Quick reminder: only three days to apply as a student to GSoC 2011</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2011/04/05/Quick-reminder%3A-only-three-days-to-apply-as-a-student-to-GSoC-2011</link>
    <guid isPermaLink="false">urn:md5:7acdc408da01a685243a0908559e59ef</guid>
    <pubDate>Tue, 05 Apr 2011 21:27:00 +0200</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;If you're a student and interested in working on a PostgreSQL project such as PostgreSQL itself, pgAdmin, phpPgAdmin, pgPool-II, you should really hurry to apply as a student and submit a proposal.&lt;/p&gt;


&lt;p&gt;There are still three days left to do so.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2011/04/05/Quick-reminder%3A-only-three-days-to-apply-as-a-student-to-GSoC-2011#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2011/04/05/Quick-reminder%3A-only-three-days-to-apply-as-a-student-to-GSoC-2011#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1361</wfw:commentRss>
      </item>
    
  <item>
    <title>Attendees of PGDay.eu 2010, send your feedback please</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2010/12/11/Send-your-feedback-ASAP</link>
    <guid isPermaLink="false">urn:md5:477cf3e5112d3490e469af51a458b4b0</guid>
    <pubDate>Sat, 11 Dec 2010 10:14:00 +0100</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;Now that &lt;a href=&quot;http://2010.pgday.eu&quot; hreflang=&quot;en&quot;&gt;PGDay.eu 2010&lt;/a&gt; is over, this is a good time for us to think about what we did right and, perhaps more important, what we did wrong. You can help us on that work by telling us what you think about &lt;a href=&quot;https://www.postgresql.eu/events/feedback/pgday2010/conference/&quot; hreflang=&quot;en&quot;&gt;the venue, the caterer&lt;/a&gt;, and the &lt;a href=&quot;https://www.postgresql.eu/events/feedback/pgday2010/&quot; hreflang=&quot;en&quot;&gt;talks&lt;/a&gt; (and I mean, each of them, including the keynote).&lt;/p&gt;


&lt;p&gt;Thanks.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2010/12/11/Send-your-feedback-ASAP#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2010/12/11/Send-your-feedback-ASAP#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1354</wfw:commentRss>
      </item>
    
  <item>
    <title>Bugfixes for pgAdmin</title>
    <link>http://blog.guillaume.lelarge.info/index.php/post/2010/11/14/Bugfixes-for-pgAdmin</link>
    <guid isPermaLink="false">urn:md5:113b0b01ba9c996b04e3185563c280aa</guid>
    <pubDate>Sun, 14 Nov 2010 18:08:00 +0100</pubDate>
    <dc:creator>Guillaume Lelarge</dc:creator>
        <category>PlanetPostgreSQL</category>
            
    <description>    &lt;p&gt;Now that most of the already commited 9.1 features are supported by pgAdmin, I realized that we had quite a lot of bugs to fix. &lt;a href=&quot;http://code.pgadmin.org/trac/query?status=accepted&amp;amp;status=assigned&amp;amp;status=new&amp;amp;status=reopened&amp;amp;order=priority&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=milestone&amp;amp;col=component&amp;amp;type=bug&quot; hreflang=&quot;en&quot;&gt;14 if trac is up to date.&lt;/a&gt; I'll work on these starting tonight and during next week. Obviously, I won't be able to fix those on Solaris, but I would really like us to have a much smaller number of bugs.&lt;/p&gt;


&lt;p&gt;If you know of a bug on pgAdmin, we would like to know about it too. You've got two mailing lists to let us know: &lt;a href=&quot;http://archives.postgresql.org/pgadmin-hackers/&quot; hreflang=&quot;en&quot;&gt;pgadmin-hackers&lt;/a&gt; and &lt;a href=&quot;http://archives.postgresql.org/pgadmin-support/&quot; hreflang=&quot;en&quot;&gt;pgadmin-support&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.guillaume.lelarge.info/index.php/post/2010/11/14/Bugfixes-for-pgAdmin#comment-form</comments>
      <wfw:comment>http://blog.guillaume.lelarge.info/index.php/post/2010/11/14/Bugfixes-for-pgAdmin#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.guillaume.lelarge.info/index.php/feed/atom/comments/1345</wfw:commentRss>
      </item>
    
</channel>
</rss>