<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-16962206</id><updated>2012-01-18T15:02:36.902+01:00</updated><category term='prompt'/><category term='subquery'/><category term='autoincrement'/><category term='correlated'/><category term='postgresql'/><category term='installation'/><category term='bug'/><category term='books'/><category term='order by'/><category term='adsi'/><category term='events'/><category term='regexp'/><category term='odbc'/><category term='outer join'/><category term='firebird'/><category term='query'/><category term='safety'/><category term='firefox'/><category term='test'/><category term='sqlserver'/><category term='bex'/><category term='job'/><category term='copy'/><category term='configuration'/><category term='intelligence'/><category term='grant management'/><category term='inner join'/><category term='grep'/><category term='function'/><category term='email'/><category term='formula'/><category term='integrated auth'/><category term='mini'/><category term='data load'/><category term='review'/><category term='dtp'/><category term='devshed'/><category term='bias'/><category term='rant'/><category term='uncorrelated'/><category term='backup'/><category term='generator'/><category term='data skew'/><category term='2.1.0'/><category term='mysql'/><category term='group by'/><category term='webservices'/><category term='sequence'/><category term='hierarchy'/><category term='parameters'/><category term='feature comparison'/><category term='flat file'/><category term='bo'/><category term='privileges'/><category term='universe'/><category term='olap'/><category term='networking'/><category term='user'/><category term='bi'/><category term='filter'/><category term='oracle'/><category term='query optimizer'/><category term='common table expression'/><category term='jaybird'/><category term='hierarchical'/><category term='timezone'/><category term='custom'/><category term='ups'/><category term='plan'/><category term='view'/><category term='optimization'/><category term='time dependent'/><category term='my.ini'/><category term='rank'/><category term='statistics'/><category term='datetime'/><category term='homeplug'/><category term='bw'/><category term='external data source'/><category term='set oriented'/><category term='random selection'/><category term='setup'/><category term='database comparison'/><category term='jdbc'/><category term='coldfusion'/><category term='list'/><category term='gnuwin32'/><category term='benchmark'/><category term='database audit'/><category term='wsdl'/><category term='federated tables'/><category term='mssql'/><category term='windows functions'/><category term='new features'/><category term='financial'/><category term='with caller privileges'/><category term='remote database sync'/><category term='download'/><category term='transactions'/><category term='opensource'/><category term='worldshop'/><category term='start'/><category term='oledb'/><category term='gimp'/><category term='procedural reasoning'/><category term='windows'/><category term='maintenance'/><category term='mysqldump'/><category term='csv'/><category term='miles and more'/><category term='explain plan'/><category term='missing dll'/><category term='database'/><category term='merge'/><category term='my.cnf'/><category term='driver'/><category term='load data'/><category term='ethernet'/><category term='speed'/><category term='clubman'/><category term='bom'/><category term='key date'/><category term='variable'/><category term='soap'/><category term='stored procedure'/><category term='views'/><category term='trigger'/><category term='reset'/><category term='sap bw'/><category term='execute'/><category term='lufthansa'/><category term='with rollup'/><category term='mini one'/><category term='validate'/><category term='indexing'/><category term='openldap'/><category term='guinness'/><category term='shipping'/><category term='tip'/><category term='powerline'/><category term='sap'/><category term='alpha'/><category term='over()'/><category term='data manipulation'/><category term='updateable views'/><category term='partition by'/><category term='sql'/><category term='trick'/><category term='pgagent'/><category term='dbmonster'/><category term='axis'/><category term='boolean'/><category term='replication'/><category term='flamerobin'/><category term='scheduling'/><category term='openquery'/><title type='text'>so many trails ... so little time</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default?start-index=101&amp;max-results=100'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>111</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-16962206.post-746050328948758406</id><published>2011-10-27T12:07:00.002+02:00</published><updated>2011-12-11T10:49:40.521+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='time dependent'/><category scheme='http://www.blogger.com/atom/ns#' term='query'/><category scheme='http://www.blogger.com/atom/ns#' term='variable'/><category scheme='http://www.blogger.com/atom/ns#' term='key date'/><category scheme='http://www.blogger.com/atom/ns#' term='sap bw'/><title type='text'>Calculations with key date</title><summary type='text'>A bit of follow up to the previous post ... we'd like to have the key date at hand for performing some calculations, unfortunately we didn't find an easy way so with some micro abap we managed to get that variable into another variable (??) that can be used.
Coding for variables (CMOD on BW side, EXIT_SAPLRRS0_001, include ZXRSRU01 etc.) follows:
Wish there was a simpler way ... 


Code:
case </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/746050328948758406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=746050328948758406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/746050328948758406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/746050328948758406'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2011/10/bit-of-follow-up-to-previous-post.html' title='Calculations with key date'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-2957366363272962295</id><published>2011-08-22T17:17:00.016+02:00</published><updated>2011-11-09T14:12:30.557+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bo'/><category scheme='http://www.blogger.com/atom/ns#' term='olap'/><category scheme='http://www.blogger.com/atom/ns#' term='universe'/><category scheme='http://www.blogger.com/atom/ns#' term='prompt'/><category scheme='http://www.blogger.com/atom/ns#' term='key date'/><category scheme='http://www.blogger.com/atom/ns#' term='sap bw'/><title type='text'>Prompts in SAP BO OLAP universe (query key date)</title><summary type='text'>
Having recently struggled with a key date prompt in a BO universe built on a BEx query ... I'm posting here some samples and screenshots of the outcome as I didn't find/couldn't understand documentation on this .... 

The universe wizard in my case didn't generate something usable out of the box, so I had to tweak it a bit 

First one, how to show it as a datepicker (sounds strange ...) 



 The</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/2957366363272962295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=2957366363272962295' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/2957366363272962295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/2957366363272962295'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2011/08/prompts-in-sap-bo-olap-universe-query.html' title='Prompts in SAP BO OLAP universe (query key date)'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-B2ZhOKy2kY4/TlJ0WTnIZ6I/AAAAAAAAFhU/216i8P9NQxc/s72-c/prompt1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-3589576091820448561</id><published>2011-07-20T12:43:00.007+02:00</published><updated>2011-07-30T22:30:37.335+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sap'/><category scheme='http://www.blogger.com/atom/ns#' term='hierarchy'/><category scheme='http://www.blogger.com/atom/ns#' term='filter'/><category scheme='http://www.blogger.com/atom/ns#' term='dtp'/><category scheme='http://www.blogger.com/atom/ns#' term='bi'/><category scheme='http://www.blogger.com/atom/ns#' term='sap bw'/><title type='text'>Filtering on hierarchy values in DTP</title><summary type='text'>Having spent some time unsuccessfully googleing for a way to use a hierarchy as filter in a DTP I've come up with a (rather inelegant) solution myself.Posting it here in hope it's helpful.  Code:         DATA: l_idx like sy-tabix.DATA: lw_hier_id TYPE rshi_s_rshiedirkey.DATA: lt_nodes_a_leaves TYPE rshi_t_hienode.DATA: lw_nodes_a_leaves LIKE LINE OF lt_nodes_a_leaves.DATA: l_hier_name TYPE </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/3589576091820448561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=3589576091820448561' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/3589576091820448561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/3589576091820448561'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2011/07/filtering-on-hierarchy-values-in-dtp.html' title='Filtering on hierarchy values in DTP'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-4333219497761287483</id><published>2010-03-20T22:02:00.011+01:00</published><updated>2010-06-01T22:45:02.937+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rank'/><category scheme='http://www.blogger.com/atom/ns#' term='partition by'/><category scheme='http://www.blogger.com/atom/ns#' term='over()'/><category scheme='http://www.blogger.com/atom/ns#' term='windows functions'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>I love windows functions</title><summary type='text'>... or whatever they call those functions that allow ranking and anyway working on "windows" of data (or sets inside sets or ...).A couple of questions on Devshed forums I recently answered using those functions.First one is about recordset paging (well, there are hundred of ways to do recordset paging, just google, but ayway) LIMIT being one of them, stored procedures another one (and ugly IMHO)</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/4333219497761287483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=4333219497761287483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/4333219497761287483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/4333219497761287483'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2010/03/i-love-windows-functions.html' title='I love windows functions'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-1004717751636755933</id><published>2010-01-16T17:07:00.010+01:00</published><updated>2010-01-16T17:59:26.568+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='execute'/><category scheme='http://www.blogger.com/atom/ns#' term='grant management'/><category scheme='http://www.blogger.com/atom/ns#' term='privileges'/><category scheme='http://www.blogger.com/atom/ns#' term='with caller privileges'/><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><title type='text'>The missing link ...</title><summary type='text'>... between me and Firebird.The Tracker, that's it, claims are it's up again but it doesn't work for me.I'd love to open a feature request, or add my vote to an existing one, "role assignment to stored procedures".Actually I'm after assignment of the rdb$admin role to a stored procedure, in order to give unprivileged users the ability to perform some administrative tasks without the need for </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/1004717751636755933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=1004717751636755933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/1004717751636755933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/1004717751636755933'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2010/01/missing-link.html' title='The missing link ...'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-3321146450521785550</id><published>2009-05-23T10:18:00.012+02:00</published><updated>2009-05-23T10:42:38.229+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='soap'/><category scheme='http://www.blogger.com/atom/ns#' term='axis'/><category scheme='http://www.blogger.com/atom/ns#' term='wsdl'/><category scheme='http://www.blogger.com/atom/ns#' term='webservices'/><title type='text'>Consuming webservices in JSP with Apache AXIS</title><summary type='text'>This is a rather old tutorial moved here from my old site on Geocities, hope it's still useful.Recently I started fumbling around with webservices, a nice integration and communication tool for my customers, what follows is a work in progress, which is going to be enhanced while I proceed in my “trial and error for the illiterate” learning path.First of all I installed AXIS (http://ws.apache.org/</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/3321146450521785550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=3321146450521785550' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/3321146450521785550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/3321146450521785550'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2009/05/consuming-webservices-in-jsp-with.html' title='Consuming webservices in JSP with Apache AXIS'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_F9nMIl5Ph68/Shex7NDjq-I/AAAAAAAADv4/muxN46XVW5s/s72-c/axis1..PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-5972875205567672236</id><published>2008-11-02T11:27:00.016+01:00</published><updated>2008-12-26T14:20:25.637+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='group by'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='order by'/><category scheme='http://www.blogger.com/atom/ns#' term='with rollup'/><title type='text'>Old challenges, new synthax ...</title><summary type='text'>I've blogged before about the new SQL synthax which is becoming available in databases and how it helps solving questions which are increasingly common.Now it's time for another example, something which doesn't come up often in a reporting environment as most tools have this feature, but can be a problem if you're building your output with a scipting language.Adding a "Total" row at the end of </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/5972875205567672236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=5972875205567672236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/5972875205567672236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/5972875205567672236'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/11/old-challenges-new-synthax.html' title='Old challenges, new synthax ...'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-6672766219771271371</id><published>2008-10-01T12:01:00.004+02:00</published><updated>2008-10-01T12:40:00.226+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openldap'/><category scheme='http://www.blogger.com/atom/ns#' term='openquery'/><category scheme='http://www.blogger.com/atom/ns#' term='adsi'/><category scheme='http://www.blogger.com/atom/ns#' term='sqlserver'/><title type='text'>Adding an OpenLDAP server as SQLServer linked server</title><summary type='text'>... and querying it.You can link to an OpenLDAP server from SQLServer by:1. Running the following stored procedures:Use mastergoexec sp_addlinkedserver'ADSI_OpenLDAP', --name of the linked server'My OpenLDAP Linked server', --description'ADSDSOObject','adsdatasource'goexec sp_addlinkedserverlogin'ADSIOpenLDAP',False,'sa','your_root_dn','your_root_dn_password'goNote that this skips each and every </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/6672766219771271371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=6672766219771271371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/6672766219771271371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/6672766219771271371'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/10/adding-openldap-server-as-sqlserver.html' title='Adding an OpenLDAP server as SQLServer linked server'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-7840624522825321021</id><published>2008-09-08T19:04:00.017+02:00</published><updated>2009-04-03T23:57:57.259+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='bias'/><category scheme='http://www.blogger.com/atom/ns#' term='query'/><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='random selection'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='data skew'/><title type='text'>Random selection, with a bias ...</title><summary type='text'>Say you want to randomly select your employee of the month, but not so randomly, better, you'd like to give your best employees a bigger chance to be selected based on their rating.This is just an example, you could be randomly displaying ads from your customers, but giving an higher chance to be displayed to those who are paying more, there can be a million other example, but I hope you got the </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/7840624522825321021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=7840624522825321021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/7840624522825321021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/7840624522825321021'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/09/random-selection-with-bias.html' title='Random selection, with a bias ...'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-2568213677629676457</id><published>2008-07-29T15:00:00.026+02:00</published><updated>2008-07-29T16:14:08.034+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='flamerobin'/><category scheme='http://www.blogger.com/atom/ns#' term='jaybird'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><category scheme='http://www.blogger.com/atom/ns#' term='jdbc'/><title type='text'>Setting up ColdFusion and Firebird</title><summary type='text'>After a long struggle on Devshed forums I decided to try on my own, after all I know Firebird and don't see why it and ColdFusion can't play nice together ... infact they did, and easily.Already having installed on my PC the database (Firebird 2.5 Alpha1) and a client tool (Flamerobin 0.8.6) I went for the server, downloading and installing the free developer version of ColdFusion 8 from Adobe's </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/2568213677629676457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=2568213677629676457' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/2568213677629676457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/2568213677629676457'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/07/setting-up-coldfusion-and-firebird.html' title='Setting up ColdFusion and Firebird'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_F9nMIl5Ph68/SI8ezKHXBbI/AAAAAAAABwY/XOI2tXuOyxQ/s72-c/cf_firebird_1.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-1574588945664004723</id><published>2008-07-27T12:19:00.017+02:00</published><updated>2008-07-29T14:59:47.395+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mini one'/><category scheme='http://www.blogger.com/atom/ns#' term='mini'/><category scheme='http://www.blogger.com/atom/ns#' term='clubman'/><title type='text'>The new MINI Clubman</title><summary type='text'>I'm the happy owner of a New MINI ONE and had a chance to try the New MINI Cooper Clubman, which, apart being the bigger sister of my car, is also a second generation New Mini, which means new engine, new steering and some other things ... unfortunately not all of them are nice.First of all, the new engine seems to be better than the old one, with a nice sound and good power.The new steering is </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/1574588945664004723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=1574588945664004723' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/1574588945664004723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/1574588945664004723'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/07/new-mini-clubman.html' title='The new MINI Clubman'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_F9nMIl5Ph68/SIxYZSWpvlI/AAAAAAAABvg/BK3HGX_zm-c/s72-c/Immag015_1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-2710416926850466554</id><published>2008-07-22T15:52:00.016+02:00</published><updated>2008-08-15T09:52:58.896+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='feature comparison'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>PostgreSQL - Firebird comparison</title><summary type='text'>Google led me to a comparison sheet about PostgreSQL and Firebird by AMSoftwareDesign, as it looks a bit outdated I decided to add some infos about the latest Firebird release, see it in action:              PostgreSQL vs Firebird   feature comparison       Feature    PostgreSQL   8.2.x   Firebird 2.0.x    Firebird   2.5 Alpha       MVCC    Yes    Yes   Yes       Row level LockingAvailable    Yes</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/2710416926850466554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=2710416926850466554' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/2710416926850466554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/2710416926850466554'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/07/postgresql-firebird-comparison.html' title='PostgreSQL - Firebird comparison'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-8010398834975100091</id><published>2008-07-22T12:47:00.006+02:00</published><updated>2008-07-22T12:58:46.667+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='query'/><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='trick'/><title type='text'>Has them all</title><summary type='text'>A question that pops up frequently on Devshed forums is "How can I get all products that are available in Red and Green colors?" or "How can I find out which customers bought this book and that CD?", solution is simple and I'll provide an example here, it can be made more complicate at your option, but it all boils down to a where and an having condition.Say we have a table that lists all </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/8010398834975100091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=8010398834975100091' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8010398834975100091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8010398834975100091'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/07/have-them-all.html' title='Has them all'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-5540556200379151548</id><published>2008-07-21T15:19:00.008+02:00</published><updated>2008-07-25T10:48:11.576+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='query'/><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='external data source'/><category scheme='http://www.blogger.com/atom/ns#' term='view'/><title type='text'>Another great new feature of Firebird 2.5</title><summary type='text'>Other than CREATE USER something really valuable has been added, the ability to query other databases.Using a table structure like my previous post what follows is an example of a query running on an external database:SET TERM ^ ;CREATE PROCEDURE GET_MASTER_PROD_ALL_EXTRETURNS (P_CODE Char(5),I_ENABLED Char(1),P_DESCR Varchar(50) )ASdeclare variable qry varchar(5000);  BEGINqry = 'SELECT </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/5540556200379151548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=5540556200379151548' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/5540556200379151548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/5540556200379151548'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/07/another-great-new-feature-of-firebird.html' title='Another great new feature of Firebird 2.5'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-4353708868166664674</id><published>2008-07-15T22:48:00.009+02:00</published><updated>2008-07-16T15:38:37.988+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='updateable views'/><category scheme='http://www.blogger.com/atom/ns#' term='grant management'/><category scheme='http://www.blogger.com/atom/ns#' term='user'/><category scheme='http://www.blogger.com/atom/ns#' term='views'/><title type='text'>Controlling user access to data</title><summary type='text'>A straight and simple question on Devshed prompted me to post this example about using updateable views to limit the ability of users to read and manipulate data both horizontally and vertically.Before you ask, with "horizontally" I mean restricting access to a subset of rows in a table, with "vertically" I mean restricting access to a subset of columns in a table.See this scenario, a table </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/4353708868166664674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=4353708868166664674' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/4353708868166664674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/4353708868166664674'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/07/controlling-user-access-to-data.html' title='Controlling user access to data'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-5084040211339713225</id><published>2008-06-23T17:59:00.008+02:00</published><updated>2008-06-23T18:26:21.600+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='inner join'/><category scheme='http://www.blogger.com/atom/ns#' term='outer join'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Don't silently turn your outer joins into inner joins ...</title><summary type='text'>Surprised by outer joins not returning the expected results? Looks like they behave like an inner join?You are probably messing with the join and the where clause.That's also why it's important to use the full join notation for every join instead of the where based one (often used for inner joins) as it allows for a better separation of the join and the where clause.Remember that the where clause</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/5084040211339713225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=5084040211339713225' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/5084040211339713225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/5084040211339713225'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/06/dont-silently-turn-your-outer-joins.html' title='Don&apos;t silently turn your outer joins into inner joins ...'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-3987302089049910784</id><published>2008-06-14T15:48:00.002+02:00</published><updated>2008-06-14T15:51:49.719+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='guinness'/><category scheme='http://www.blogger.com/atom/ns#' term='download'/><title type='text'>Firefox running for the Guinness record</title><summary type='text'>Let's help Firefox to reach the goal and set the new world record for downloads on June 17, 2008.BTW: I've tried it as a portable app ... WOW, much better than Firefox 2, fast and doesn't slow down with many open tabs.</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/3987302089049910784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=3987302089049910784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/3987302089049910784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/3987302089049910784'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/06/firefox-running-for-guinness-record.html' title='Firefox running for the Guinness record'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-7467615221820170477</id><published>2008-06-08T15:11:00.003+02:00</published><updated>2008-06-08T15:14:38.349+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='odbc'/><category scheme='http://www.blogger.com/atom/ns#' term='driver'/><title type='text'>The neglected driver ...</title><summary type='text'>Looks like the Firebird team is going to put some effort on the ODBC driver, which has been lying there abandoned for a few years (last activity report is of 2006) despite it's usefulness in windows desktop apps (at least for me ;))</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/7467615221820170477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=7467615221820170477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/7467615221820170477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/7467615221820170477'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/06/neglected-driver.html' title='The neglected driver ...'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-1467802471078541161</id><published>2008-05-23T23:18:00.004+02:00</published><updated>2008-05-23T23:33:53.916+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data load'/><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='dbmonster'/><category scheme='http://www.blogger.com/atom/ns#' term='benchmark'/><title type='text'>Data load speed test</title><summary type='text'>I've run some data load tests with various databases using DBMonster, so connecting to databases through JDBC on a WindowsXP personal computer.Here are the results, in both cases I loaded 100 rows in the parent table and 1000 in the child table, with foreign keys enabled.Firebird 2.1 with Jaybird 2.1.3 and DBMonster 1.0.3 (And Java .6)Table structure is:CREATE TABLE GUYS(GUY_ID Integer NOT NULL,</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/1467802471078541161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=1467802471078541161' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/1467802471078541161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/1467802471078541161'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/05/data-load-speed-test.html' title='Data load speed test'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-7420808817819865601</id><published>2008-04-25T12:21:00.010+02:00</published><updated>2008-05-23T15:59:44.411+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='integrated auth'/><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Integrated auth in Firebird 2.1</title><summary type='text'>Just a quick sample of integrated windows auth in Firebird 2.1Logon to my Firebird server as a user with administrative privileges on the machine:C:\Programmi\Firebird\Firebird_2_1\bin&gt;isql localhost:employeeDatabase:  localhost:employeeSQL&gt;So I'm logged. let's check who am I for Firebird:SQL&gt; select current_user from rdb$database;USER==============================================================</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/7420808817819865601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=7420808817819865601' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/7420808817819865601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/7420808817819865601'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/04/just-quick-sample-of-integrated-windows.html' title='Integrated auth in Firebird 2.1'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-8443245445410632053</id><published>2008-04-19T22:39:00.004+02:00</published><updated>2008-04-19T22:52:15.891+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='csv'/><category scheme='http://www.blogger.com/atom/ns#' term='flat file'/><category scheme='http://www.blogger.com/atom/ns#' term='copy'/><category scheme='http://www.blogger.com/atom/ns#' term='load data'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Loading data from files</title><summary type='text'>Having already blogged about loading data from flat files to MySQL, it's time to post a similar case for PostgreSQL, as the manual seems to lack a real life example ...First of all the table to be loadedCREATE TABLE target(code character(3) NOT NULL,"name" character varying(50) NOT NULL,amount numeric,CONSTRAINT pk_1 PRIMARY KEY (code))WITH (OIDS=FALSE);as you can see one of the column names is a</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/8443245445410632053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=8443245445410632053' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8443245445410632053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8443245445410632053'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/04/loading-data-from-files.html' title='Loading data from files'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-71545212867343833</id><published>2008-04-06T12:55:00.003+02:00</published><updated>2008-04-06T13:41:05.390+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='indexing'/><category scheme='http://www.blogger.com/atom/ns#' term='query'/><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><title type='text'>Two basic indexing tips ...</title><summary type='text'>Here are two basic tips for proper indexing ...Don't mess with datatypes, too often people refer to an attribute defining it as one datatype in a table and as another in different tables, this actually prevents index usage in joins (forget about FKs for this time ;)) See an example here. You could declare a function based index as a workaround, but why don't we all try to make it right?Put </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/71545212867343833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=71545212867343833' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/71545212867343833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/71545212867343833'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/04/two-basic-indexing-tips.html' title='Two basic indexing tips ...'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-3629740062633507638</id><published>2008-03-30T14:03:00.008+02:00</published><updated>2008-03-30T14:27:36.487+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pgagent'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>PgAgent - Installation and usage</title><summary type='text'>Prompted by the usual Devshed's post, this time about pgAgent, here I am with a small "tutorial" (or maybe just a small collection of screenshots).PgAgent is a great little tool, much like SQLServer's SQLAgent or the built in scheduling abilities of Oracle and MySQL (which is a much nicer solution IMHO), what's weak is the installation and the docs, I mean, why the pgAdminIII installer does ask </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/3629740062633507638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=3629740062633507638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/3629740062633507638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/3629740062633507638'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/03/pgagent-installation-and-usage.html' title='PgAgent - Installation and usage'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_F9nMIl5Ph68/R--E4f5kiFI/AAAAAAAABcQ/bjX7JHv15s8/s72-c/pgagent_2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-5080150642839504658</id><published>2008-03-24T09:13:00.004+01:00</published><updated>2008-03-24T12:47:40.047+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='query optimizer'/><category scheme='http://www.blogger.com/atom/ns#' term='speed'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Shoot in the foot</title><summary type='text'>I've just finished reading two recent blog posts about new query optimizations in the upcoming MySQL 6.0, it's all fine and dandy but ...Looking at Correlated semi-join subqueries and PostgreSQL by S. Petrunia we can read something like Quote:    The first thing we did was to take a look at PostgreSQL as it is easily available and seems to have at least decent subquery handling (or even better </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/5080150642839504658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=5080150642839504658' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/5080150642839504658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/5080150642839504658'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/03/shoot-in-foot.html' title='Shoot in the foot'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-4026536816668072604</id><published>2008-03-16T11:30:00.006+01:00</published><updated>2008-03-23T20:20:20.132+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='transactions'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='data manipulation'/><category scheme='http://www.blogger.com/atom/ns#' term='safety'/><category scheme='http://www.blogger.com/atom/ns#' term='devshed'/><title type='text'>Fasten your seatbelts ...</title><summary type='text'>... or how to safely run data manipulation statements in your database.Reading posts on Devshed's forums I sometime notice people doing maintenance work on their data without any safety net apart from occasional ages old backups ;-).Anyway I think there's no need for a restore if you just issued the wrong update query, I mean, transactions are here for this, it's just a matter of educating people</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/4026536816668072604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=4026536816668072604' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/4026536816668072604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/4026536816668072604'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/03/fasten-your-seatbelts.html' title='Fasten your seatbelts ...'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-1485214197895845725</id><published>2008-03-09T13:56:00.013+01:00</published><updated>2008-03-09T16:00:09.764+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='procedural reasoning'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='set oriented'/><title type='text'>Simulating procedural logic</title><summary type='text'>Sometimes I see people having great difficulties in describing how to fetch data for a report.They are unable to reason by sets and tend to describe things in procedural terms.Here I'm posting a small example of how you can write a query that reproduces that procedural reasoning and lets the optimizer do the work of translating it into efficient SQL.Say someone has a table structure like this, a </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/1485214197895845725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=1485214197895845725' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/1485214197895845725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/1485214197895845725'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/03/simulating-procedural-logic.html' title='Simulating procedural logic'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-7633812330226097001</id><published>2008-03-01T17:52:00.014+01:00</published><updated>2008-03-04T12:16:13.505+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='remote database sync'/><category scheme='http://www.blogger.com/atom/ns#' term='events'/><category scheme='http://www.blogger.com/atom/ns#' term='federated tables'/><title type='text'>How to sync two tables in MySQL</title><summary type='text'>A question pops out quite often on Devshed forums, "How do I keep table x of my local database in sync with a remote copy?"Usually replication is the suggested answer, but it might be a little overkill, think of those who just want to push the new product catalogue from a local server to their hosted site?  No permanent connection and so  on ...In this case  the right tool might be a mix of the </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/7633812330226097001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=7633812330226097001' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/7633812330226097001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/7633812330226097001'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/03/how-to-sync-two-tables-in-mysql.html' title='How to sync two tables in MySQL'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-7251576369003446049</id><published>2008-01-06T21:12:00.002+01:00</published><updated>2008-11-02T12:19:11.678+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='common table expression'/><category scheme='http://www.blogger.com/atom/ns#' term='bom'/><category scheme='http://www.blogger.com/atom/ns#' term='hierarchical'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>New challenges, new synthax</title><summary type='text'>This post wants to be:1. A quick glance at the new "common table expression" (aka hierarchical queries) in Firebird 2.12. A call to action for other opensource databasesSo, on with 1., Firebird recently added another great feature, common table expressions (CTE) which, to my eye at least, boils down to hierarchical queries.This is basically the ability to efficiently and easily query hierarchical</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/7251576369003446049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=7251576369003446049' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/7251576369003446049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/7251576369003446049'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2008/01/new-challenges-new-synthax.html' title='New challenges, new synthax'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_F9nMIl5Ph68/R4KIRNfv9sI/AAAAAAAABOM/yVT4XvSWOGI/s72-c/select_bom.PNG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-2487467481915687551</id><published>2007-12-26T11:20:00.000+01:00</published><updated>2007-12-28T12:04:50.684+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='flamerobin'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><title type='text'>Back to the Blog ... back to the bug (report)</title><summary type='text'>Today I decide to put up a post about a common requirement which leads to an interesting SQL query (see an example here) using Firebird and Flamerobin, after a few seconds I was writing bug reports :-( see:[ 1858394 ] Error selecting from mon$statementsand[ 1858397 ] Error running SELECT query. (Not a Flamerobin bug)Hope these will be fixed soon.EDIT: the developers instantly responded to my bug </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/2487467481915687551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=2487467481915687551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/2487467481915687551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/2487467481915687551'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/12/back-to-blog-back-to-bug-report.html' title='Back to the Blog ... back to the bug (report)'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-8162155795235798193</id><published>2007-08-04T17:43:00.000+02:00</published><updated>2007-08-13T12:30:50.319+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shipping'/><category scheme='http://www.blogger.com/atom/ns#' term='ups'/><category scheme='http://www.blogger.com/atom/ns#' term='lufthansa'/><category scheme='http://www.blogger.com/atom/ns#' term='worldshop'/><category scheme='http://www.blogger.com/atom/ns#' term='miles and more'/><title type='text'>Lufthansa ships with ...</title><summary type='text'>For those who are spending their miles at the Lufthansa Worldshop for the first time, they ship with UPS ... I haven't been able to find this out from their site and the tracking code remained rather obscure to me until I asked for clarification.Their answer was quick and accurate, but, is it so difficult to put a link to the UPS site?</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/8162155795235798193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=8162155795235798193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8162155795235798193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8162155795235798193'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/08/lufthansa-ships-with.html' title='Lufthansa ships with ...'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-8757576447116447433</id><published>2007-06-28T18:33:00.001+02:00</published><updated>2007-06-28T18:45:31.145+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='grep'/><category scheme='http://www.blogger.com/atom/ns#' term='gnuwin32'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Gnuwin32, what about the docs????</title><summary type='text'>Today I had to surrender and use grep on a pile of rubbish, er ..., on some Cognos files, those pesky .icr, so I went to the GNUWin32 site, downloaded the grep installer for windows and run, just like any good (windows) boy would do ... and the first surprise came, the gnuwin32/bin dir is not added to path ... anyway, I added it by hand and went on, in hope that a simple grep --help would give me</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/8757576447116447433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=8757576447116447433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8757576447116447433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8757576447116447433'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/06/gnuwin32-what-about-docs.html' title='Gnuwin32, what about the docs????'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-8247220935066778634</id><published>2007-06-20T18:23:00.000+02:00</published><updated>2007-06-20T18:27:07.460+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='database comparison'/><title type='text'>Opensource database comparison</title><summary type='text'>"Which is the best opensource database?", "How does MySQL/PostgreSQL/Firebird ... (you name it) stand against Firebird/PostgreSQL/MySQL ... (you name it again)?" I'm shure we've all heard this questions many times, but now I have the definitive answer, by Jim Starkey himself, you can read the full post here, but in short is"I think the short answer is that nobody with the experience to do this is</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/8247220935066778634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=8247220935066778634' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8247220935066778634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8247220935066778634'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/06/opensource-database-comparison.html' title='Opensource database comparison'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-8308477691515644713</id><published>2007-05-27T12:33:00.000+02:00</published><updated>2007-11-04T16:43:13.498+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='maintenance'/><category scheme='http://www.blogger.com/atom/ns#' term='events'/><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='scheduling'/><title type='text'>Automating mantenance tasks on MySQL</title><summary type='text'>I'm trying to automate some trivial maintenance tasks for my own MySQL server, and trying also to minimize the effort, so ... Here is the recipe:Take an excellent generalized stored procedure like the one by Konstantin Osipov, see "Dynamic SQL is Stored Procedures" on MySQLForge (example 4).Tune it a bit so that it takes into account only non system tables (I'm trying to turn it into something </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/8308477691515644713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=8308477691515644713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8308477691515644713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8308477691515644713'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/05/automating-mantenance-tasks-on-mysql.html' title='Automating mantenance tasks on MySQL'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-8278222396750757248</id><published>2007-05-20T11:05:00.000+02:00</published><updated>2007-06-17T00:00:42.995+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='stored procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='mysqldump'/><title type='text'>MYSQLDUMP, mind your options!!</title><summary type='text'>In the process of upgrading my desktop installation of MySQL I noticed that, unlike triggers, stored procedures are not automatically dumped, that's a "not so nice" feature of mysqldump, sic, here is a snippet for those who don't have time to check the manualC:\Documents and Settings\user&gt;mysqldump -uroot --single-transaction --routines--databases test remote_test &gt; c:/backup_mysql_20_05_07.sql--</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/8278222396750757248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=8278222396750757248' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8278222396750757248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/8278222396750757248'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/05/mysqldump-mind-your-options.html' title='MYSQLDUMP, mind your options!!'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-6822329568050753118</id><published>2007-05-04T10:59:00.000+02:00</published><updated>2011-11-10T17:10:37.381+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bex'/><category scheme='http://www.blogger.com/atom/ns#' term='sap'/><category scheme='http://www.blogger.com/atom/ns#' term='bw'/><category scheme='http://www.blogger.com/atom/ns#' term='boolean'/><category scheme='http://www.blogger.com/atom/ns#' term='formula'/><category scheme='http://www.blogger.com/atom/ns#' term='sap bw'/><title type='text'>SAP BW, IF for your BEx formulas</title><summary type='text'>Have you ever felt the need for an IF in your BEx formulas? Didn't find it? That's because SAP expects you to know about boolean math ...
See, we are subtracting two quantities and we want our result to be shown as 0 if the actual result is negative, the trick is very simple, look at this example:

( ( 'GR quantity' - 'PO quantity' ) &gt; 0 ) * ( 'GR quantity' - 'PO quantity' )


The first block </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/6822329568050753118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=6822329568050753118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/6822329568050753118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/6822329568050753118'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/05/sap-bw-if-for-your-bex-formulas.html' title='SAP BW, IF for your BEx formulas'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-4062770403793478021</id><published>2007-04-07T17:26:00.000+02:00</published><updated>2007-04-09T13:35:21.343+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='merge'/><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='database audit'/><category scheme='http://www.blogger.com/atom/ns#' term='2.1.0'/><category scheme='http://www.blogger.com/atom/ns#' term='list'/><category scheme='http://www.blogger.com/atom/ns#' term='alpha'/><category scheme='http://www.blogger.com/atom/ns#' term='new features'/><title type='text'>Firebird 2.1 alpha, a quick glance at the new features</title><summary type='text'>After reading about the new Firebird 2.1 alpha I was eager to test it, and here are some sample queries that show how the new features look like, all examples are based on the standard EMPLOYEE.FDB.The first one is about the MERGE statement, which is useful in many ways (my favourite is synching tables).MERGE    INTO country c    USING (SELECT * FROM countryUNION ALLSELECT 'Maroc' country, '</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/4062770403793478021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=4062770403793478021' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/4062770403793478021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/4062770403793478021'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/04/firebird-21-alpha-quick-glance-at-new.html' title='Firebird 2.1 alpha, a quick glance at the new features'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-16954323404401026</id><published>2007-03-30T10:56:00.000+02:00</published><updated>2007-03-30T11:02:08.242+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='financial'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='intelligence'/><title type='text'>Being a mod means</title><summary type='text'>This time I turned the kind gift of the Devshed guys into:"Financial Intelligence" an interesting book which I hope will help in my ever evolving job, I really need to understand what financial people are saying and what they really mean. This one looks promising, it's a side of my professional life that I've never really dug into, but it's very interesting (and somehow fun) .</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/16954323404401026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=16954323404401026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/16954323404401026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/16954323404401026'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/03/being-mod-means.html' title='Being a mod means'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_F9nMIl5Ph68/RgzRDB0hZXI/AAAAAAAAALU/0Cq2FFABB7U/s72-c/financial_intelligence.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-6332155748212476565</id><published>2007-02-24T17:48:00.000+01:00</published><updated>2007-02-25T22:07:21.045+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='function'/><category scheme='http://www.blogger.com/atom/ns#' term='regexp'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='email'/><category scheme='http://www.blogger.com/atom/ns#' term='validate'/><title type='text'>Another handy MySQL function</title><summary type='text'>This time it's a quick function to validate email addresses, based on regexp.It can be used in a trigger to add data validation, or to check data already in your database that needs a clean up ... really a simple wrapper around a simple regexp query, but it can be helpful.Here it is:DELIMITER $$ DROP FUNCTION IF EXISTS `test`.`is_valid_email` $$CREATE DEFINER=`root`@`localhost` FUNCTION `</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/6332155748212476565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=6332155748212476565' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/6332155748212476565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/6332155748212476565'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/02/another-handy-mysql-function.html' title='Another handy MySQL function'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-511588885434705103</id><published>2007-02-14T13:55:00.000+01:00</published><updated>2007-02-17T13:51:26.090+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='start'/><category scheme='http://www.blogger.com/atom/ns#' term='gimp'/><category scheme='http://www.blogger.com/atom/ns#' term='missing dll'/><title type='text'>Missing DLLs when starting GIMP 2.3.x</title><summary type='text'>I've just downloaded and installed Gimp 2.3.14 for windows and noticed what seems to be a widespread problem, startup errors due to missing dlls. Of the many solutions listed here I found out that:1. Changing the shortcut icon on the desktop (point 5 in the page linked)2. Changing the shortcut icon in Start -&gt; Programs -&gt; GIMP -&gt; Gimp 23. Adding a registry key (point 6 in the page linked)solved </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/511588885434705103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=511588885434705103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/511588885434705103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/511588885434705103'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/02/missing-dlls-when-starting-gimp-23x.html' title='Missing DLLs when starting GIMP 2.3.x'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_F9nMIl5Ph68/RdML5gpa89I/AAAAAAAAAFg/NfaGphRBWMs/s72-c/gimp2.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-5718659627422301985</id><published>2007-02-11T14:02:00.000+01:00</published><updated>2007-02-11T18:13:01.631+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='timezone'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='datetime'/><title type='text'>MySQL spanning different timezones</title><summary type='text'>So what, if you are planning a centralized MySQL server and many clients all around the world?First of all, check the manualThen install timezone description tables from hereThen run a small example to see how the server and client timezones can interact.Here is the standard server setupmysql&gt; show variables like 'time_zone';+---------------+--------+| Variable_name | Value  |+---------------+---</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/5718659627422301985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=5718659627422301985' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/5718659627422301985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/5718659627422301985'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/02/mysql-spanning-different-timezones.html' title='MySQL spanning different timezones'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-1533772137860962526</id><published>2007-01-27T21:24:00.000+01:00</published><updated>2008-01-04T15:24:21.653+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ethernet'/><category scheme='http://www.blogger.com/atom/ns#' term='speed'/><category scheme='http://www.blogger.com/atom/ns#' term='homeplug'/><category scheme='http://www.blogger.com/atom/ns#' term='test'/><category scheme='http://www.blogger.com/atom/ns#' term='powerline'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Powerline, the good, the bad and the ugly ...</title><summary type='text'>After much esitance I decided to jump on the bandwagon of Powerline (a.k.a. Homeplug), that's it, ethernet over power!At first it sounds great, I mean, no cabling, no pesky radiations going round like with WiFi and so on ... an easy way of sharing internet connection for my 2 PCs at home.I tested WiFi 802.11b before and wasn't impressed with it's performance, so I reached my purse and got a pair </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/1533772137860962526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=1533772137860962526' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/1533772137860962526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/1533772137860962526'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/01/powerline-good-bad-and-ugly.html' title='Powerline, the good, the bad and the ugly ...'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_F9nMIl5Ph68/Rb8nvcqX_hI/AAAAAAAAAAU/hC-ctVm1dQg/s72-c/Immag000.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-116947303246186344</id><published>2007-01-22T14:21:00.000+01:00</published><updated>2007-01-22T14:37:12.830+01:00</updated><title type='text'>Signs of MySQL usage at BBC.CO.UK</title><summary type='text'>A very interesting document from BBC's Standards and Guidelines (Database Design and Development Standards v1.00) mentions only two databases, guess what? Oracle and MySQL!!!BTW the document is also a source of good design tips like:Normally, use only alphanumeric characters plus the underscore (_) character for table names.MySQLTable names are case sensitive under UNIX (or Linux). To avoid </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/116947303246186344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=116947303246186344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116947303246186344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116947303246186344'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/01/signs-of-mysql-usage-at-bbccouk.html' title='Signs of MySQL usage at BBC.CO.UK'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-116940264018931812</id><published>2007-01-21T19:02:00.000+01:00</published><updated>2007-01-21T19:09:02.300+01:00</updated><title type='text'>Playing with transactions on MySQL</title><summary type='text'>  Here is my attempt, failed as per the video quality, at showing a small example of transactions usage on MySQL 5.</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/116940264018931812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=116940264018931812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116940264018931812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116940264018931812'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/01/playing-with-transactions-on-mysql.html' title='Playing with transactions on MySQL'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-116793461854571850</id><published>2007-01-04T19:06:00.000+01:00</published><updated>2007-01-04T19:19:07.703+01:00</updated><title type='text'>Falcon, the new MySQL Storage Engine</title><summary type='text'>While taking a quick look at the newly released docs for Falcon, the new storage engine for the MySQL database from MySQL AB (and this is important, as actually InnoDB and the now ditched BDB storage engines for MySQL database are from Oracle) I noticed two "strange" things, at least to someone thinking of large databases running on dedicated hardware.First of all the data storage, chapter </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/116793461854571850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=116793461854571850' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116793461854571850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116793461854571850'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2007/01/falcon-new-mysql-storage-engine.html' title='Falcon, the new MySQL Storage Engine'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-116750077854221672</id><published>2006-12-30T18:32:00.003+01:00</published><updated>2010-01-17T11:32:28.786+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='autoincrement'/><category scheme='http://www.blogger.com/atom/ns#' term='sequence'/><category scheme='http://www.blogger.com/atom/ns#' term='reset'/><category scheme='http://www.blogger.com/atom/ns#' term='generator'/><category scheme='http://www.blogger.com/atom/ns#' term='trigger'/><title type='text'>Creating an auto incrementing column in Firebird</title><summary type='text'>or in any database that supports triggers and generators (aka sequences) ...The answer is well known however the question comes out quite often, be it in an Oracle, Firebird or PostgreSQL forum.Well, the PostgreSQL guys took a radical approach and embedded the common solution into a datatype named SERIAL, what follows is an example aimed at the Firebird newbie. Say you have a table like this</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/116750077854221672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=116750077854221672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116750077854221672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116750077854221672'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/12/creating-auto-incrementing-column-in.html' title='Creating an auto incrementing column in Firebird'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-116575862733849475</id><published>2006-12-10T14:45:00.000+01:00</published><updated>2006-12-10T14:50:27.566+01:00</updated><title type='text'>An Opensource approach to engineering</title><summary type='text'>I love this guys!Image extracted with GIMP and it's excellent SIOX tool</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/116575862733849475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=116575862733849475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116575862733849475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116575862733849475'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/12/opensource-approach-to-engineering.html' title='An Opensource approach to engineering'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-116455236186670527</id><published>2006-11-26T15:34:00.000+01:00</published><updated>2006-11-26T15:46:02.270+01:00</updated><title type='text'>How to use BLOB field in VB 6 with Firebird</title><summary type='text'>As per this post on Devshed forums I'm pasting here some sample code (taken from Mike Hillyer's excellent "Accessing MySQL BLOB columns using Visual Basic 6"), hope it helps.Code uses a simpler table structure and due to the fact that I didn't bother about reproducing the "autoincrement" field it will get you into troubles if trying to run the sample multiple times.You'll notice that basically </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/116455236186670527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=116455236186670527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116455236186670527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116455236186670527'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/11/how-to-use-blob-field-in-vb-6-with.html' title='How to use BLOB field in VB 6 with Firebird'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-116300936711017122</id><published>2006-11-08T19:07:00.000+01:00</published><updated>2007-02-11T18:17:28.358+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='custom'/><category scheme='http://www.blogger.com/atom/ns#' term='order by'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Custom ordering for your results</title><summary type='text'>... or, taming the ORDER BY clause.Say you want to implement a custom ordering for your queries, as an example, you want to display each customer's orders with shipped orders first, then waiting orders and open orders last.That's ordering by the 'status' column and you can't use alphabetical ordering!In this case you'll have to implement some kind of logic in your order by clause, and a CASE is </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/116300936711017122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=116300936711017122' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116300936711017122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116300936711017122'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/11/custom-ordering-for-your-results.html' title='Custom ordering for your results'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-116248195549153484</id><published>2006-11-02T16:29:00.003+01:00</published><updated>2008-10-08T12:17:09.829+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='query'/><category scheme='http://www.blogger.com/atom/ns#' term='correlated'/><category scheme='http://www.blogger.com/atom/ns#' term='uncorrelated'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='subquery'/><title type='text'>Of correlated and uncorrelated subqueries</title><summary type='text'>Many SQL questions on Devshed forums are easily solved using correlated and uncorrelated subqueries, but many don't know of them at all, or at least are not shure about the syntax, usage and performance implications, they sometimes rave about a stored procedure to loop and select other values ...The definition (taken from O'Reilly's "Learning SQL on SQL Server 2005") of a correlated subquery:A </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/116248195549153484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=116248195549153484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116248195549153484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116248195549153484'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/11/of-correlated-and-uncorrelated.html' title='Of correlated and uncorrelated subqueries'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-116205780384456436</id><published>2006-10-28T19:49:00.000+02:00</published><updated>2007-05-10T12:22:27.822+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plan'/><category scheme='http://www.blogger.com/atom/ns#' term='speed'/><category scheme='http://www.blogger.com/atom/ns#' term='query'/><category scheme='http://www.blogger.com/atom/ns#' term='firebird'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='explain plan'/><title type='text'>Firebird's explain PLAN</title><summary type='text'>After a post on Devshed forums I'm putting here an excerpt from a little tutorial about Firebird I wrote some time ago, this is about the explain plan of a query:More on speeding … the Explain planAn extremely useful feature of relational databases is the “explain plan”,whichshows us how the database engine is going to execute a query. It allows the DBA tocheck if indexes are used and how tables </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/116205780384456436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=116205780384456436' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116205780384456436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116205780384456436'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/10/firebirds-explain-plan_116205780384456436.html' title='Firebird&apos;s explain PLAN'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-116152995703481678</id><published>2006-10-22T17:10:00.000+02:00</published><updated>2006-10-22T17:12:37.653+02:00</updated><title type='text'>Audacity 1.3.2 is coming</title><summary type='text'>See release notes for Audacity 1.3.2</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/116152995703481678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=116152995703481678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116152995703481678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116152995703481678'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/10/audacity-132-is-coming.html' title='Audacity 1.3.2 is coming'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-116150213696844844</id><published>2006-10-22T09:27:00.000+02:00</published><updated>2006-10-26T21:43:02.960+02:00</updated><title type='text'>Handy MySQL function</title><summary type='text'>Here is a simple function that can help coping with wrong database design, when you have a mix of  NULLs and blank fields meaning the same, no value, which they shouldn't.DELIMITER $$ DROP FUNCTION IF EXISTS `test`.`is_initial` $$CREATE FUNCTION `test`.`is_initial` (f varchar(255)) RETURNS BOOLBEGIN  SET @is_initial = false; CASE fWHEN NULL THEN SET @is_initial = TRUE;WHEN '' THEN SET @is_initial</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/116150213696844844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=116150213696844844' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116150213696844844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/116150213696844844'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/10/handy-mysql-function.html' title='Handy MySQL function'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-115842019979618609</id><published>2006-09-16T17:19:00.000+02:00</published><updated>2006-09-16T22:33:34.430+02:00</updated><title type='text'>Something you'll need for shure in Poland</title><summary type='text'>Well, if you don't want your laptop to lie dead soon the first thing to buy when in Poland is an adaptor like this from DPM Elektronik.</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/115842019979618609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=115842019979618609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115842019979618609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115842019979618609'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/09/something-youll-need-for-shure-in.html' title='Something you&apos;ll need for shure in Poland'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-115747703273750414</id><published>2006-09-05T19:22:00.000+02:00</published><updated>2006-09-06T23:59:14.380+02:00</updated><title type='text'>Php and SOAP, getting to the corporate business intelligence repository</title><summary type='text'>What follows is a snippet taken from a very old experiment I did, integrating a php application with BusinessObject's WebIntelligence 2.7.x through it's (very experimental) webservices toolkit, which was really promising but Java and .NET oriented ;)// include the classinclude("nusoap.php"); // create a instance of the SOAP client object // remember that this script is the client,// accessing the</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/115747703273750414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=115747703273750414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115747703273750414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115747703273750414'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/09/php-and-soap-getting-to-corporate.html' title='Php and SOAP, getting to the corporate business intelligence repository'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-115659515178098424</id><published>2006-08-26T14:21:00.000+02:00</published><updated>2006-08-26T14:25:56.076+02:00</updated><title type='text'>MySQL function: months_between</title><summary type='text'>After directing a Devshed poster looking for a way to compute the number of months between two dates to the manual I decided to turn the solution posted in user comments by Isaac Shepard into a function, here it is:DELIMITER $$ DROP FUNCTION IF EXISTS `test`.`months_between` $$CREATE FUNCTION `test`.`months_between` (date_start DATE, date_end DATE) RETURNS INTBEGIN  SELECT IF((((YEAR(date_end) - </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/115659515178098424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=115659515178098424' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115659515178098424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115659515178098424'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/08/mysql-function-monthsbetween.html' title='MySQL function: months_between'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-115582211431836748</id><published>2006-08-17T15:31:00.000+02:00</published><updated>2006-08-17T15:52:25.003+02:00</updated><title type='text'>Flamerobin as a GUI for embedded Firebird</title><summary type='text'>In general you  just need to have Flamerobin connect to Embedded Firebird through local protocol, my setup with Firebird 1.5.3 (Firebird 2.0 RC3 is giving me troubles!) is:1. Pick fbembed.dll from Firebird-1.5.3.4870-0_embed_win32.zip2. Copy it to C:\Program Files\FlameRobin (the Flamerobin installation folder, whatever it's named3. Rename it to fbclient.dll4. Register a new server in Flamerobin,</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/115582211431836748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=115582211431836748' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115582211431836748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115582211431836748'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/08/flamerobin-as-gui-for-embedded.html' title='Flamerobin as a GUI for embedded Firebird'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-115574362327705591</id><published>2006-08-16T17:27:00.000+02:00</published><updated>2006-08-16T18:05:50.923+02:00</updated><title type='text'>The case for function based indexes - part two</title><summary type='text'>Some time ago I wrote about function based indexes, showing a PostgreSQL based case, right now I'll show a Firebird based example, due to the fact that Firebird 2.0 supports Expression Indexes, which are my good old function based indexes.This example will be based on the sample database which ships with Firebird, named EMPLOYEE.FDB.As the old example was based on extracting a substring from a </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/115574362327705591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=115574362327705591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115574362327705591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115574362327705591'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/08/case-for-function-based-indexes-part.html' title='The case for function based indexes - part two'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-115572858922669110</id><published>2006-08-16T13:38:00.000+02:00</published><updated>2006-08-16T13:43:09.893+02:00</updated><title type='text'>MySQL Control Center, live after death???</title><summary type='text'>Hey, looks like someone decided to give a spin to the old MySQLCC (aka Mysql control center) , see Sourceforge project page by releasing version 0.9.7.</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/115572858922669110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=115572858922669110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115572858922669110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115572858922669110'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/08/mysql-control-center-live-after-death.html' title='MySQL Control Center, live after death???'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-115529244835443598</id><published>2006-08-11T12:18:00.000+02:00</published><updated>2006-08-11T12:34:08.606+02:00</updated><title type='text'>OpenOffice Calc and Firebird through ODBC</title><summary type='text'>This is meant to be a quickstarter in using OpenOffice 2.0.3 and Firebird on Windows.Of course many of this steps are common to any other database used in OpenOffice, so I hopeothers will be able to use this doc as a source.I'll be using the EMPLOYEE.FDB sample database that comes with Firebird.First of all you need to install the ODBC driver for Firebird, you can download the latest andgreatest </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/115529244835443598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=115529244835443598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115529244835443598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115529244835443598'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/08/openoffice-calc-and-firebird-through.html' title='OpenOffice Calc and Firebird through ODBC'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-115444693663731698</id><published>2006-08-01T17:37:00.000+02:00</published><updated>2006-08-06T13:03:50.140+02:00</updated><title type='text'>ASP and Firebird</title><summary type='text'>This is really a copy of a PDF file I made available on my old website, I'm posting it here because I'm trying to clean up things.It's about Firebird and ASP pages, the most interesting thing is that it shows how to use transactions within ASP pages, which is not so common.Connect to Firebird and retrieve data in ASP:...on error resume nextdim adoConndim adoRSdim counterset adoConn = </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/115444693663731698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=115444693663731698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115444693663731698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115444693663731698'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/08/asp-and-firebird.html' title='ASP and Firebird'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-115304639562096717</id><published>2006-07-16T12:26:00.000+02:00</published><updated>2006-07-17T15:05:40.183+02:00</updated><title type='text'>Translating for developers</title><summary type='text'>Hi, what follows are my personal thoughts after reading Dmitry Yemanov's comments to a great poll posted at Firebirdnews about the features people would like to see implemented.Quote:1. SMP support is a clear winner (23% of votes) in the poll. And this is definitely one of the high priority tasks in the project. As you know, it was the major goal of the Vulcan development and its implementation </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/115304639562096717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=115304639562096717' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115304639562096717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115304639562096717'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/07/translating-for-developers.html' title='Translating for developers'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-115271879694661084</id><published>2006-07-12T17:21:00.000+02:00</published><updated>2006-07-13T17:51:39.453+02:00</updated><title type='text'>Relocating MySQL data</title><summary type='text'>After an interesting question I'm posting here a simple description of how to place your MySQL data on another drive, if you got a server with multiple disks this can really benefit performance.The picture is this, you have installed MySQL server in the usual C:\Program Files\MySQL\MySQL Server 5.0\ folder, but you have another drive D: and you want to place your data there, you'll create three </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/115271879694661084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=115271879694661084' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115271879694661084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115271879694661084'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/07/relocating-mysql-data.html' title='Relocating MySQL data'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-115166730344143866</id><published>2006-06-30T13:30:00.000+02:00</published><updated>2006-07-02T15:41:11.763+02:00</updated><title type='text'>ASP and PostgreSQL quick snippet</title><summary type='text'>Hi, here is a small snippet to connect to PostgreSQL from an ASP page and run a select query.dim adoConn dim adoRS dim counter set adoConn = Server.CreateObject("ADODB.Connection") set adoRS = Server.CreateObject("ADODB.Recordset") strConn = "Provider=PostgreSQL.1;Data Source=localhost;location=postgres;" &amp; _"User Id=login_role;password=login_role_password;" adoConn.Open strConn </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/115166730344143866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=115166730344143866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115166730344143866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115166730344143866'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/06/asp-and-postgresql-quick-snippet.html' title='ASP and PostgreSQL quick snippet'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-115124100705195937</id><published>2006-06-25T15:04:00.000+02:00</published><updated>2006-06-25T15:10:07.636+02:00</updated><title type='text'>Hardware upgrades are good!</title><summary type='text'>Hi there, working in the IT sector and standing in front of my laptop every day for many hours brought me to forget about my home desktop, used by my parents and expecially about their old CRT 17'' monitor.I kept thinking it was a bit old but generally good, now I switched to a 17'' LCD display and I have to say that is's waaaaay much better, more environment friendly, more desk space friendly, </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/115124100705195937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=115124100705195937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115124100705195937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115124100705195937'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/06/hardware-upgrades-are-good.html' title='Hardware upgrades are good!'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-115062791491671418</id><published>2006-06-18T12:48:00.000+02:00</published><updated>2006-06-18T12:56:45.400+02:00</updated><title type='text'>I love it!!</title><summary type='text'>After the Olympics Turin has become a very nice place to stay, here is another great dayI'd love an LX 125cc 4t to speed through the city.</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/115062791491671418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=115062791491671418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115062791491671418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/115062791491671418'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/06/i-love-it.html' title='I love it!!'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114995184474415067</id><published>2006-06-10T16:57:00.000+02:00</published><updated>2006-06-10T21:32:39.346+02:00</updated><title type='text'>Being a mod means ...</title><summary type='text'>receiving a little gift from the owners of the site ;-) which is very much appreciated.In my case the first gift turned into this book about composites.Don't be fooled by the title, I'm more into the sailing or skiingside of composites, but it's a nice book.An year after I got another nice one, "The Design of Everyday Things", well I just received it and haven't had the time to even take a peek </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114995184474415067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114995184474415067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114995184474415067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114995184474415067'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/06/being-mod-means.html' title='Being a mod means ...'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114855716112298797</id><published>2006-05-25T13:35:00.000+02:00</published><updated>2006-05-25T13:39:22.246+02:00</updated><title type='text'>Good news from the blogs!!!</title><summary type='text'>Yes, for you replication lovers on MS platform, who had great time with MsSQL and MySQL's replication now Slony (replication engine for PostgreSQL) is here.See the original blog post by Robert Treat (with installation guide). A prebuilt windows binary is available here.</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114855716112298797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114855716112298797' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114855716112298797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114855716112298797'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/05/good-news-from-blogs.html' title='Good news from the blogs!!!'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114682586102218269</id><published>2006-05-05T12:38:00.000+02:00</published><updated>2006-05-05T12:48:25.780+02:00</updated><title type='text'>ASP and MySQL</title><summary type='text'>Seems there is some interest in running MySQL as a backend for (classic) ASP based sites,  at least looking at recent posts on DevShed forums.As questions are quite similar and I've not found a good ASP+MySQL tutorial on the web I'm posting a short example hereHere is my snippet: dim adoConn dim adoRS     set adoConn = Server.CreateObject("ADODB.Connection")     set adoRS = Server.CreateObject("</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114682586102218269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114682586102218269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114682586102218269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114682586102218269'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/05/asp-and-mysql.html' title='ASP and MySQL'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114682518760277231</id><published>2006-05-05T12:30:00.000+02:00</published><updated>2006-05-05T12:33:08.056+02:00</updated><title type='text'>MySQL does it again ... MySQL Forge!!!</title><summary type='text'>Great snippet on Dynamic SQL in stored procedures from MySQLForge!!!</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114682518760277231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114682518760277231' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114682518760277231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114682518760277231'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/05/mysql-does-it-again-mysql-forge.html' title='MySQL does it again ... MySQL Forge!!!'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114623268745709159</id><published>2006-04-28T15:31:00.000+02:00</published><updated>2006-04-28T16:00:03.646+02:00</updated><title type='text'>Migrating triggers from SQLServer to MySQL</title><summary type='text'>After a few posts on Devshed forums I decided to summarize some basic directions about porting SQLServer triggers to MySQL.There are some notable differencies between trigger syntax in SQLServer and  MySQL (and other databases in general).First of all usually you reference old (preexisting)  and new (inserted or updated) column values  by NEW.column_name and OLD.column_name, but in SQLServer </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114623268745709159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114623268745709159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114623268745709159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114623268745709159'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/04/migrating-triggers-from-sqlserver-to.html' title='Migrating triggers from SQLServer to MySQL'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114591556996631212</id><published>2006-04-24T23:49:00.000+02:00</published><updated>2006-07-06T16:13:49.256+02:00</updated><title type='text'>An INFORMATION_SCHEMA for Firebird?</title><summary type='text'>Excellent blog post by Lorenzo Alberton! Is INFORMATION_SCHEMA coming to Firebird? I hope so!EDIT:The author left out one important bit of info that you can retrieve from Firebird, a list of Stored Procedures, here is the sql query:SELECT* FROM rdb$procedures; </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114591556996631212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114591556996631212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114591556996631212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114591556996631212'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/04/informationschema-for-firebird.html' title='An INFORMATION_SCHEMA for Firebird?'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114555904852963627</id><published>2006-04-20T20:39:00.000+02:00</published><updated>2006-08-18T17:10:42.426+02:00</updated><title type='text'>MySQL full LOAD DATA INFILE example</title><summary type='text'>Here is a more detailed example of LOAD DATA INFILE syntax:First of all create a table to be loaded:mysql&gt; create table 2beloaded (field_1 char(1), field_2 int, field_3 char(1), field_4 varchar(50));Query OK, 0 rows affected (0.15 sec)Then the text file:c, 1, ab, 2, d(named 2beloaded.txt and placed in c:\, so it's a file created on Windows platform!!)Now the query to load it, we want to load the </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114555904852963627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114555904852963627' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114555904852963627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114555904852963627'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/04/mysql-full-load-data-infile-example.html' title='MySQL full LOAD DATA INFILE example'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114531244651185529</id><published>2006-04-18T00:12:00.000+02:00</published><updated>2006-04-18T00:25:24.210+02:00</updated><title type='text'>MySQL triggers and Master/Detail tables</title><summary type='text'>Have you ever wondered how to update the status of an order to "Closed" when the whole ordered quantity has been received?If you are on a database that supports triggers like  me  (I'm on MySQL 5.0.16 right now) you can have something like:Table structure:Orders tableDROP TABLE IF EXISTS `test`.`orders`;CREATE TABLE  `test`.`orders` (  `order_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,  `</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114531244651185529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114531244651185529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114531244651185529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114531244651185529'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/04/mysql-triggers-and-masterdetail-tables.html' title='MySQL triggers and Master/Detail tables'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114484039001246291</id><published>2006-04-12T13:12:00.000+02:00</published><updated>2006-04-12T14:36:40.360+02:00</updated><title type='text'>Php PDO and Firebird</title><summary type='text'>A quick snippet ...&lt;?phptry {   $dbh = new PDO("firebird:dbname=localhost:C:\\Programmi\\Firebird\\Firebird_2_0\\examples\\empbuild\\EMPLOYEE.FDB", "SYSDBA", "masterkey");   foreach ($dbh-&gt;query('SELECT COUNTRY from COUNTRY') as $row) {     print_r($row);   }      $dbh = null;  } catch (PDOException $e) {   print "Error!: " . $e-&gt;getMessage() . "";   die();} ?&gt; </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114484039001246291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114484039001246291' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114484039001246291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114484039001246291'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/04/php-pdo-and-firebird.html' title='Php PDO and Firebird'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114477653657891328</id><published>2006-04-11T19:28:00.000+02:00</published><updated>2006-04-12T12:59:14.296+02:00</updated><title type='text'>Php Firebird (ehm Interbase) functions ...</title><summary type='text'>A post on Devshed forums showed that the php manual did not have any detailed info about ibase_service_attach and some other Interbase/Firebird functions, of course the question has been answered in the forums and the user promised to add a note on the official docs, anyway here is a small example of use of that specific function:...// get server version and implementation strings if (($service =</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114477653657891328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114477653657891328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114477653657891328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114477653657891328'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/04/php-firebird-ehm-interbase-functions.html' title='Php Firebird (ehm Interbase) functions ...'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114477587054008287</id><published>2006-04-11T19:16:00.000+02:00</published><updated>2007-04-23T18:02:54.638+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oledb'/><category scheme='http://www.blogger.com/atom/ns#' term='odbc'/><category scheme='http://www.blogger.com/atom/ns#' term='replication'/><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Replicating from MsSQL Server to PostgreSQL</title><summary type='text'>Very interesting post from Magnus Hagander, take a look at it.</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114477587054008287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114477587054008287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114477587054008287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114477587054008287'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/04/replicating-from-mssql-server-to.html' title='Replicating from MsSQL Server to PostgreSQL'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114392406101715113</id><published>2006-04-01T22:38:00.000+02:00</published><updated>2006-04-01T22:41:01.996+02:00</updated><title type='text'>OpenLDAP Win32</title><summary type='text'>Good news for OpenLDAP fans!!Lucas Bergman with help from Matthias Mohr has put up a win32 build of OpenLDAP 2.2.29.Thank you very much and keep up the good work.</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114392406101715113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114392406101715113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114392406101715113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114392406101715113'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/04/openldap-win32.html' title='OpenLDAP Win32'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114271949892184565</id><published>2006-03-18T22:44:00.000+01:00</published><updated>2006-03-18T23:06:11.703+01:00</updated><title type='text'>Small Firebird trigger example</title><summary type='text'>After reading a post in the Firebird forum at Devshed I immediately put up a small example about writing a trigger (and also upgraded my favourite tool, Flamerobin, to the latest version) , here it goes:1. Create an empty table2. Create the trigger on it using Flamerobin's guided menuAs you can see the menu will guide you through defining the trigger name, to activate it (in other words you can </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114271949892184565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114271949892184565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114271949892184565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114271949892184565'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/03/small-firebird-trigger-example.html' title='Small Firebird trigger example'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114234157137678722</id><published>2006-03-14T14:01:00.000+01:00</published><updated>2006-03-14T14:06:11.713+01:00</updated><title type='text'>GIMP 2.3.7 on WinXP</title><summary type='text'>After many difficulties with preceding development releases I finally succeeded in compiling The GIMP on WinXP with MinGW.Right now I only used a simple --configure --disable-print --disable-python --prefix=/d/gimp237 but I'll try with more complex config options and also adding littlecms to the pack, see some screenshots below</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114234157137678722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114234157137678722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114234157137678722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114234157137678722'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/03/gimp-237-on-winxp.html' title='GIMP 2.3.7 on WinXP'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114189291624234497</id><published>2006-03-09T09:23:00.000+01:00</published><updated>2006-03-09T17:55:53.423+01:00</updated><title type='text'>MySQL Workbench 1.0.5 beta ...</title><summary type='text'>... nice, but not quite there yet.I mean, it has a clean look at I processed the ported Firebird Employee database of my previous posts to check it's reverse engineering abilities, everything went smooth for tables and views (and foreign keys too!), but unfortunately no triggers and stored procs where reverse engineered.Here is the visual cronicle:Connection to database:After the connection MySQL</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114189291624234497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114189291624234497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114189291624234497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114189291624234497'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/03/mysql-workbench-105-beta.html' title='MySQL Workbench 1.0.5 beta ...'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114086561054667098</id><published>2006-02-25T12:04:00.000+01:00</published><updated>2006-02-25T15:25:31.390+01:00</updated><title type='text'>iPod enabled tie</title><summary type='text'>Look at this great tie!! I want it.</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114086561054667098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114086561054667098' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114086561054667098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114086561054667098'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/02/ipod-enabled-tie.html' title='iPod enabled tie'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114086514845607584</id><published>2006-02-25T11:53:00.000+01:00</published><updated>2006-02-25T12:02:45.686+01:00</updated><title type='text'>TOra alive and well, releases v. 1.3.21</title><summary type='text'>TOra 1.3.21 is out, release notes:Notes:1.3.21:2006-02-08: Applied patch from Pawe=B3 Kucharczyk to fix storage queries used against Ora 10gR2.2006-02-18: Readded Check Syntax to SQL Worksheet (many thanks to Sergei Kuchin of otl)2006-02-18: minor changes to PL/SQL Debugger.Solved a bug where the debugger stops on every call of a stored function,now when compiling the current position of the </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114086514845607584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114086514845607584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114086514845607584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114086514845607584'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/02/tora-alive-and-well-releases-v-1321.html' title='TOra alive and well, releases v. 1.3.21'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114086371553350737</id><published>2006-02-25T11:33:00.000+01:00</published><updated>2006-02-25T11:35:16.010+01:00</updated><title type='text'>After the olympics ... ski mountaineering championships!</title><summary type='text'></summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114086371553350737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114086371553350737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114086371553350737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114086371553350737'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/02/after-olympics-ski-mountaineering.html' title='After the olympics ... ski mountaineering championships!'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-114019518706567475</id><published>2006-02-17T17:46:00.000+01:00</published><updated>2006-02-17T17:53:07.636+01:00</updated><title type='text'>The case for function based indexes</title><summary type='text'>Since a lot of codes are "speaking codes" (...) meaning that they can be split into fixed meaningful substrings I often see queries like this:select * from t_table where c_code like 'DD6%' which is highly inefficient, look at it's explain plan:Seq Scan on t_table  (cost=100000000.00..100000001.06 rows=1 width=33)   Filter: (((c_code)::text ~~ 'DD6%'::text)Since the first 3 chars only are </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/114019518706567475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=114019518706567475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114019518706567475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/114019518706567475'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/02/case-for-function-based-indexes.html' title='The case for function based indexes'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113967594321445964</id><published>2006-02-11T17:33:00.000+01:00</published><updated>2006-02-11T17:39:30.690+01:00</updated><title type='text'>Borland to dismiss Interbase (again)?</title><summary type='text'>An email from the Italian branch of Borland Developer News announced that Borland is to dismiss a lot of it's more traditional business, including Interbase (no mention of it in Tod Nielsen's letter) .Time to switch the remaining Interbase customers to Firebird?</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113967594321445964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113967594321445964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113967594321445964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113967594321445964'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/02/borland-to-dismiss-interbase-again.html' title='Borland to dismiss Interbase (again)?'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113933267885453192</id><published>2006-02-07T18:12:00.000+01:00</published><updated>2006-02-07T18:17:59.900+01:00</updated><title type='text'>TOra 1.3.20 is out</title><summary type='text'>Great news for all Oracle users, after the release of a free version of Oracle 10g (named Oracle Database 10g Express Edition) which is free to develop, deploy and distribute, we now have a new version of the great opensource management tool for Oracle, TOra 1.3.20, which nicely complements the free database and will hopefully take the place of the free version of TOAD on my PC.More on this later</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113933267885453192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113933267885453192' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113933267885453192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113933267885453192'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/02/tora-1320-is-out.html' title='TOra 1.3.20 is out'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113896678919917794</id><published>2006-02-03T12:39:00.000+01:00</published><updated>2006-02-07T15:34:43.286+01:00</updated><title type='text'>Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 8</title><summary type='text'>A more interesting example:SET TERM ^ ;CREATE PROCEDURE ADD_EMP_PROJ (EMP_NO Smallint,PROJ_ID Char(5) )ASBEGINBEGININSERT INTO employee_project (emp_no, proj_id) VALUES (:emp_no, :proj_id);WHEN SQLCODE -530 DO    EXCEPTION unknown_emp_id;ENDSUSPEND;END^SET TERM ; ^This procedure makes use of exceptions to manage errors, MySQL currently doesn't support them  but equivalent can be achieved with </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113896678919917794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113896678919917794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113896678919917794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113896678919917794'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/02/porting-employee-database-_113896678919917794.html' title='Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 8'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113896232567148879</id><published>2006-02-03T11:19:00.000+01:00</published><updated>2006-02-07T15:36:40.296+01:00</updated><title type='text'>Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 7</title><summary type='text'>Trying to keep pace with work and porting Firebird stored procs to MySQL can be really hard ... anyway here are two sp's translated:Firebird procedure to list some stats for departments by department head:SET TERM ^ ;CREATE PROCEDURE SUB_TOT_BUDGET (HEAD_DEPT Char(3) )RETURNS (TOT_BUDGET Decimal(12,2),AVG_BUDGET Decimal(12,2),MIN_BUDGET Decimal(12,2),MAX_BUDGET Decimal(12,2) )ASBEGINSELECT SUM(</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113896232567148879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113896232567148879' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113896232567148879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113896232567148879'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/02/porting-employee-database-from_03.html' title='Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 7'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113878587759757845</id><published>2006-02-01T09:54:00.000+01:00</published><updated>2006-02-03T10:38:09.243+01:00</updated><title type='text'>Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 6</title><summary type='text'>More on foreign keys in MySQL:After all those FK added  I can only recommend to check that columns have the same datatype, if this is not true MySQL will spit strange error messages like "can't create table ..." when trying to add foreign keys.Foreign keys are not deferrable in MySQL so the circular reference between employee and department tables makes impossible to load employee before dept and</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113878587759757845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113878587759757845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113878587759757845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113878587759757845'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/02/porting-employee-database-from.html' title='Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 6'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113871810781407580</id><published>2006-01-31T15:33:00.000+01:00</published><updated>2006-02-01T09:47:31.370+01:00</updated><title type='text'>Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 5</title><summary type='text'>Having used InnoDB table handler in MySQL to be on par with Firebird capabilities I'm going to add foreign keys, unique constraints and check constraints and indexes to the tables migrated in MySQL.Here is a screenshot of Flamerobin showing constraints for table CUSTOMER.First of all I'll add the foreign key constraints, here is MySQL's syntax:ALTER TABLE `employee`.`customer` ADD CONSTRAINT `</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113871810781407580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113871810781407580' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113871810781407580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113871810781407580'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/01/porting-employee-database-_113871810781407580.html' title='Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 5'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113869741430089766</id><published>2006-01-31T09:30:00.000+01:00</published><updated>2006-01-31T11:25:58.570+01:00</updated><title type='text'>Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 4</title><summary type='text'>Now  the next trigger, it will be an AFTER INSERT trigger, so to fire after the previous one has inserted a row, obviously an after insert trigger can reference old and new data but can't modify them.So, on with the code:DELIMITER $-- DROP TRIGGER new_salary $$CREATE TRIGGER new_salary AFTER INSERT ON salary_historyFOR EACH ROW BEGINUPDATE salary_history SET new_salary = (new.old_salary + </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113869741430089766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113869741430089766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113869741430089766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113869741430089766'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/01/porting-employee-database-from_31.html' title='Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 4'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113864193013308336</id><published>2006-01-30T18:14:00.000+01:00</published><updated>2006-01-31T09:30:12.583+01:00</updated><title type='text'>Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 3</title><summary type='text'>Ok, on with triggers, I'll start migrating the existing triggers then I'll look at triggers as a workaround for computed columns.Firebird syntax for SAVE_SALARY_CHANGE trigger (active AFTER UPDATE) on table EMPLOYEE is:...BEGIN IF (old.salary &lt;&gt; new.salary) THENINSERT INTO salary_history(emp_no, change_date, updater_id, old_salary, percent_change)VALUES (old.emp_no,'NOW',user,old.salary,(</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113864193013308336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113864193013308336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113864193013308336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113864193013308336'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/01/porting-employee-database-_113864193013308336.html' title='Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 3'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113863328086893484</id><published>2006-01-30T15:55:00.000+01:00</published><updated>2006-01-30T18:12:05.343+01:00</updated><title type='text'>Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 2</title><summary type='text'>More on calculated columns, here is the create table statement for one of Firebird's Employee.fdb database:             CREATE TABLE SALARY_HISTORY (EMP_NO EMPNO NOT NULL,CHANGE_DATE DATE DEFAULT 'NOW' NOT NULL,UPDATER_ID VARCHAR(20) NOT NULL,OLD_SALARY SALARY NOT NULL,PERCENT_CHANGE DOUBLE PRECISION DEFAULT 0 NOT NULLCHECK (PERCENT_CHANGE BETWEEN -50 AND 50),       NEW_SALARY COMPUTED BY(</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113863328086893484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113863328086893484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113863328086893484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113863328086893484'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/01/porting-employee-database-from_30.html' title='Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 2'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113863169964254275</id><published>2006-01-30T15:24:00.000+01:00</published><updated>2006-01-30T16:12:27.790+01:00</updated><title type='text'>Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 1</title><summary type='text'>Hi, I've decided to make an in depth test of MySQL's new functionalities by porting Firebird's EMPLOYEE.FDB database to MySQL 5.1.5, here is what I found, I hope it will be useful for people porting apps from MySQL to Firebird and vice-versa.First of all, a screenshot (taken from  Firebird's excellent Flamerobin  admin tool) showing the actual employee.fdb structure.Note the presence of </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113863169964254275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113863169964254275' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113863169964254275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113863169964254275'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/01/porting-employee-database-from.html' title='Porting the EMPLOYEE database from Firebird 2.0 to MySQL 5.1 part 1'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113853435219110527</id><published>2006-01-29T12:24:00.000+01:00</published><updated>2006-01-29T13:48:29.780+01:00</updated><title type='text'>Discordian Date for MySQL</title><summary type='text'>Here is a MySQL version of a function to convert from gregorian to discordian dates.DELIMITER $DROP FUNCTION IF EXISTS `test`.`toDiscordian` $CREATE FUNCTION `toDiscordian`(gdate DATE) RETURNS varchar(50)DETERMINISTICCOMMENT 'Discordian Date Converter'BEGINSET @year = EXTRACT(YEAR FROM gdate);SET @dyear = @year + 1166;SET @month = EXTRACT(MONTH FROM gdate);SET @mday = DAYOFMONTH(gdate);SET @yday </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113853435219110527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113853435219110527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113853435219110527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113853435219110527'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/01/discordian-date-for-mysql.html' title='Discordian Date for MySQL'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113845747920156939</id><published>2006-01-28T15:08:00.000+01:00</published><updated>2006-01-28T15:11:19.200+01:00</updated><title type='text'>Changelog to the people</title><summary type='text'>Right now two other guys added their voice to mine in this feature request to MySQL AB for a public changelog of MySQL QueryBrowser.Please add your comments too, if interested in it.</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113845747920156939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113845747920156939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113845747920156939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113845747920156939'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/01/changelog-to-people.html' title='Changelog to the people'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113845709596132225</id><published>2006-01-28T15:03:00.000+01:00</published><updated>2006-01-28T15:04:56.056+01:00</updated><title type='text'>Going wireless!!!!</title><summary type='text'>If you live in Europe, as I do, don't think twice about it, go to eBay for your wi-fi gear.Now I'm on a cheap used (??) Linksys BEFW1154 which works very well.</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113845709596132225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113845709596132225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113845709596132225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113845709596132225'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/01/going-wireless.html' title='Going wireless!!!!'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113844978415134092</id><published>2006-01-28T13:00:00.000+01:00</published><updated>2006-01-28T13:03:04.166+01:00</updated><title type='text'>On with MySQL 5.1</title><summary type='text'>Eager to experiment ... I installed MySQL 5.1.5 on my laptop, in place of an existing MySQL 5.0.x installation from which I borrowed the my.ini file, the outcome has been bug 16781 at MySQL AB, the new one doesn't seem to like this row in the ini file:# The default storage engine that will be used when create new tablesdefault-storage-engine=InnoDB</summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113844978415134092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113844978415134092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113844978415134092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113844978415134092'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/01/on-with-mysql-51.html' title='On with MySQL 5.1'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113811771514266993</id><published>2006-01-24T15:26:00.000+01:00</published><updated>2006-01-24T16:52:30.643+01:00</updated><title type='text'>A better PHPBB schema</title><summary type='text'>I've just modified the phpBB schema for PostgreSQL by:Taking it from phpBB 2.0.18Placing everything in the "phpbb" schemaThe schema  is referred to a role (owner) named "phpbb"There is some sample data in  it (rubbish) you can login as "Admin" password "admin"Now the most relevant changes:Added foreign keysAdded unique constraintsTested on PostgreSQL 8.1 win32Downloadable hereHope it helps!!I'm </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113811771514266993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113811771514266993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113811771514266993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113811771514266993'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/01/better-phpbb-schema.html' title='A better PHPBB schema'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16962206.post-113785391512004390</id><published>2006-01-21T15:21:00.000+01:00</published><updated>2006-01-21T15:31:55.160+01:00</updated><title type='text'>Select a random row from a table with Firebird</title><summary type='text'>After reading this page I noticed that Firebird was missing, so I had to add this little bit of info.In order to select a random row from a table in Firebird you need to first install an UDF that provides the rand() function, which is ib_udf, it comes for free with the server, but it's not installed by default.So execute the appropriate sql script to install a bunch of UDFs (ib_udf.sql and </summary><link rel='replies' type='application/atom+xml' href='http://pabloj.blogspot.com/feeds/113785391512004390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16962206&amp;postID=113785391512004390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113785391512004390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16962206/posts/default/113785391512004390'/><link rel='alternate' type='text/html' href='http://pabloj.blogspot.com/2006/01/select-random-row-from-table-with.html' title='Select a random row from a table with Firebird'/><author><name>pabloj</name><uri>http://www.blogger.com/profile/03043517866113096024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_F9nMIl5Ph68/S8Cp_yVzpqI/AAAAAAAAE2k/VVnHlYmO_oU/S220/pk_logo3.png'/></author><thr:total>0</thr:total></entry></feed>
