From: Matt S Trout Date: Tue, 1 Oct 2019 02:59:02 +0000 (+0000) Subject: EC easy node types X-Git-Tag: v2.000000~3^2~58 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=eba4f083ef2358a980a0e8c643587db52f0ed1d2;p=dbsrgits%2FSQL-Abstract.git EC easy node types --- diff --git a/lib/SQL/Abstract/ExtraClauses.pm b/lib/SQL/Abstract/ExtraClauses.pm index e0b2532..8ff2b74 100644 --- a/lib/SQL/Abstract/ExtraClauses.pm +++ b/lib/SQL/Abstract/ExtraClauses.pm @@ -338,6 +338,8 @@ sub _expand_clause_setop { 1; +__END__ + =head1 NAME SQL::Abstract::ExtraClauses - new/experimental additions to L @@ -362,4 +364,74 @@ For plugin authors, creates a callback to call a method on the plugin. Available only during plugin callback executions, contains the currently active L object. +=head1 NODE TYPES + +=head2 alias + +Represents a table alias. Expands name and column names with ident as default. + + # expr + { -alias => [ 't', 'x', 'y', 'z' ] } + + # aqt + { -alias => [ + { -ident => [ 't' ] }, { -ident => [ 'x' ] }, + { -ident => [ 'y' ] }, { -ident => [ 'z' ] }, + ] } + + # query + t(x, y, z) + [] + +=head2 as + +Represents an sql AS. LHS is expanded with ident as default, RHS is treated +as a list of arguments for the alias node. + + # expr + { foo => { -as => 'bar' } } + + # aqt + { -as => + [ + { -ident => [ 'foo' ] }, + { -alias => [ { -ident => [ 'bar' ] } ] }, + ] + } + + # query + foo AS bar + [] + + # expr + { -as => [ { -select => { _ => 'blah' } }, 't', 'blah' ] } + + # aqt + { -as => [ + { -select => + { select => { -op => [ ',', { -ident => [ 'blah' ] } ] } } + }, + { -alias => [ { -ident => [ 't' ] }, { -ident => [ 'blah' ] } ] }, + ] } + + # query + (SELECT blah) AS t(blah) + [] + +=head2 cast + + # expr + { -cast => [ { -ident => 'birthday' }, 'date' ] } + + # aqt + { -func => [ + 'cast', { + -as => [ { -ident => [ 'birthday' ] }, { -ident => [ 'date' ] } ] + }, + ] } + + # query + CAST(birthday AS date) + [] + =cut