},
}
+=item SELECT * FROM foo WHERE name = 'John'
+
+ {
+ type => 'select',
+ ast_version => 0.0001,
+ select => [
+ {
+ type => 'SelectComponent',
+ value => {
+ type => 'Identifier',
+ element1 => '*',
+ },
+ },
+ ],
+ tables => {
+ type => 'TableIdentifier',
+ value => {
+ type => 'Identifier',
+ element1 => 'foo',
+ },
+ },
+ where => {
+ type => 'Operator',
+ op => '=',
+ args => [
+ {
+ type => 'Identifier',
+ element1 => 'name',
+ },
+ {
+ type => 'Value',
+ subtype => 'String',
+ element1 => 'John',
+ },
+ ],
+ },
+ }
+
+=item SELECT COUNT(*) FROM foo WHERE name = 'John' AND ( title = 'Mr' OR abbrev = 'Dr' )
+
+ {
+ type => 'select',
+ ast_version => 0.0001,
+ select => [
+ {
+ type => 'SelectComponent',
+ value => {
+ type => 'Operator',
+ op => 'COUNT',
+ args => [
+ {
+ type => 'Identifier',
+ element1 => '*',
+ },
+ ],
+ },
+ },
+ ],
+ tables => {
+ type => 'TableIdentifier',
+ value => {
+ type => 'Identifier',
+ element1 => 'foo',
+ },
+ },
+ where => {
+ type => 'Operator',
+ op => 'AND',
+ args => [
+ {
+ type => 'Operator',
+ op => '=',
+ args => [
+ {
+ type => 'Identifier',
+ element1 => 'name',
+ },
+ {
+ type => 'Value',
+ subtype => 'String',
+ element1 => 'John',
+ },
+ ],
+ },
+ {
+ type => 'Operator',
+ op => 'OR',
+ args => [
+ {
+ type => 'Operator',
+ op => '=',
+ args => [
+ {
+ type => 'Identifier',
+ element1 => 'title',
+ },
+ {
+ type => 'Value',
+ subtype => 'String',
+ element1 => 'Mr',
+ },
+ ],
+ },
+ {
+ type => 'Operator',
+ op => '=',
+ args => [
+ {
+ type => 'Identifier',
+ element1 => 'abbrev',
+ },
+ {
+ type => 'Value',
+ subtype => 'String',
+ element1 => 'Dr',
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ }
+
+=item SELECT COUNT(DISTINCT(*)) FROM foo WHERE ( name = 'John' AND title = 'Mr' ) OR abbrev = 'Dr'
+
+ {
+ type => 'select',
+ ast_version => 0.0001,
+ select => [
+ {
+ type => 'SelectComponent',
+ value => {
+ type => 'Operator',
+ op => 'COUNT',
+ args => [
+ {
+ type => 'Operator',
+ op => 'DISTINCT',
+ args => [
+ {
+ type => 'Identifier',
+ element1 => '*',
+ },
+ ],
+ },
+ ],
+ },
+ },
+ ],
+ tables => {
+ type => 'TableIdentifier',
+ value => {
+ type => 'Identifier',
+ element1 => 'foo',
+ },
+ },
+ where => {
+ type => 'Operator',
+ op => 'OR',
+ args => [
+ {
+ type => 'Operator',
+ op => 'AND',
+ args => [
+ {
+ type => 'Operator',
+ op => '=',
+ args => [
+ {
+ type => 'Identifier',
+ element1 => 'name',
+ },
+ {
+ type => 'Value',
+ subtype => 'String',
+ element1 => 'John',
+ },
+ ],
+ },
+ {
+ type => 'Operator',
+ op => '=',
+ args => [
+ {
+ type => 'Identifier',
+ element1 => 'title',
+ },
+ {
+ type => 'Value',
+ subtype => 'String',
+ element1 => 'Mr',
+ },
+ ],
+ },
+ ],
+ },
+ {
+ type => 'Operator',
+ op => '=',
+ args => [
+ {
+ type => 'Identifier',
+ element1 => 'abbrev',
+ },
+ {
+ type => 'Value',
+ subtype => 'String',
+ element1 => 'Dr',
+ },
+ ],
+ },
+ ],
+ },
+ }
+
+=item * SELECT foo, bar baz FROM foo ORDER BY bar, baz DESC GROUP BY 1,3,2
+
+ {
+ type => 'select',
+ ast_version => 0.0001,
+ select => [
+ {
+ type => 'SelectComponent',
+ value => {
+ type => 'Identifier',
+ element1 => 'foo',
+ },
+ },
+ {
+ type => 'SelectComponent',
+ value => {
+ type => 'Identifier',
+ elements => 'bar',
+ },
+ },
+ {
+ type => 'SelectComponent',
+ value => {
+ type => 'Identifier',
+ element1 => 'baz',
+ },
+ },
+ ],
+ tables => {
+ type => 'TableIdentifier',
+ value => {
+ type => 'Identifier',
+ element1 => 'foo',
+ },
+ },
+ orderby => [
+ {
+ type => 'OrderbyComponent',
+ value => {
+ type => 'Identifier',
+ element1 => 'bar',
+ },
+ dir => 'ASC',
+ },
+ {
+ type => 'OrderbyComponent',
+ value => {
+ type => 'Identifier',
+ element1 => 'baz',
+ },
+ dir => 'DESC',
+ },
+ ],
+ groupby => [
+ {
+ type => 'GroupbyComponent',
+ value => {
+ type => 'Number',
+ value => 1,
+ },
+ },
+ {
+ type => 'GroupbyComponent',
+ value => {
+ type => 'Number',
+ value => 3,
+ },
+ },
+ {
+ type => 'GroupbyComponent',
+ value => {
+ type => 'Number',
+ value => 2,
+ },
+ },
+ ],
+ }
+
+=item * UPDATE foo SET col1 = 1
+
+ {
+ type => 'update',
+ ast_version => 0.0001,
+ tables => {
+ type => 'TableIdentifier',
+ value => {
+ type => 'Identifier',
+ element1 => 'foo',
+ },
+ },
+ set => [
+ {
+ type => 'SetComponent',
+ col => {
+ type => 'Identifier,
+ element1 => 'col1',
+ },
+ value => {
+ type => 'Number',
+ value => 1,
+ },
+ },
+ ],
+ }
+
+=item * INSERT INTO foo ( col1, col2 ) VALUES ( 1, 3 )
+
+ {
+ type => 'insert',
+ ast_version => 0.0001,
+ tables => {
+ type => 'TableIdentifier',
+ value => {
+ type => 'Identifier',
+ element1 => 'foo',
+ },
+ },
+ columns => [
+ {
+ type => 'Identifier,
+ element1 => 'col1',
+ },
+ {
+ type => 'Identifier,
+ element1 => 'col2',
+ },
+ ],
+ values => [
+ {
+ type => 'Number,
+ value => '1',
+ },
+ {
+ type => 'Number,
+ value => '3',
+ },
+ ],
+ }
+
=back
=head1 AUTHORS