From emhnemhn at gmail.com Sat Mar 12 19:57:54 2011 From: emhnemhn at gmail.com (Ernesto =?ISO-8859-1?Q?Hern=E1ndez-Novich?=) Date: Sat, 12 Mar 2011 23:27:54 -0430 Subject: [caracas-pm] Un servicio interesante Message-ID: <1299988674.6215.76.camel@deepthought.ius.cc> http://www.phenona.com Lo ?nico que no me gusta es que no ofrecen PostgreSQL, pero lo dem?s luce bastante bien. -- Ernesto Hern?ndez-Novich - @iamemhn - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't aptitude it, it isn't useful or doesn't exist. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 From emhnemhn at gmail.com Tue Mar 29 06:10:58 2011 From: emhnemhn at gmail.com (Ernesto =?ISO-8859-1?Q?Hern=E1ndez-Novich?=) Date: Tue, 29 Mar 2011 08:40:58 -0430 Subject: [caracas-pm] =?iso-8859-1?q?Usando_funciones_SQL_multipar=E1metro?= =?iso-8859-1?q?_desde_DBIx=3A=3AClass?= Message-ID: <1301404258.3537.174.camel@deepthought.ius.cc> Si bien est? documentado entre DBIx::Class::ResultSet y SQL::Abstract, no hay ejemplos suficientes para las cosas complejas que uno tiene que lograr cuando quiere utilizar funciones SQL como columnas o como filtros. No me refiero a las est?ndar (SUM, AVG, MAX, MIN, etc.); me refiero a funciones arbitrarias que uno escribe en manejadores de bases de datos que ofrecen esa posibilidad, e incluso en presencia de operadores binarios arbitrarios (por ejemplo, el >> que pongo m?s abajo). El problema era expresar select ... foo(a,bar(b,c)) as foo ... (...) where ... campo >> baz(d,e) ... considerando que los puntos suspensivos corresponden a otras columnas de inter?s o filtros, y que a, b, c, d y e son par?metros de la b?squeda, mientras que campo siempre es la misma columna. Esto es, quiero que las posiciones de a, b, c, d y e sean placeholders, en caso contrario el desempe?o de la base de datos no va a ser bueno. Termin? escribiendo ...->search( { 'campo' => { '>>=' => \[ "baz(?,?)", [ 1 => $d ], [ 2 => $e ] ] }, { '+select' => [ \[ "foo(?,bar(?,?))", [ 1 => $a ], [ 2 => $b ], [ 3 => $c ] ] ], '+as' => [ qw/foo/ ] } ); Y al mirar la consulta generada usando DBIC_TRACE, la forma es exactamente la que quiero, excepto que no se va a incluir el 'as foo', sin embargo el ResultSet tiene la columna virtual 'foo' que debe ser consultada v?a get_column(). -- Ernesto Hern?ndez-Novich - @iamemhn - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't aptitude it, it isn't useful or doesn't exist. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3