Skip to content

Commit 0bcefa0

Browse files
committed
ommit AS prefix for subquery in FROM clause MTC-30899
1 parent ad8de45 commit 0bcefa0

File tree

2 files changed

+12
-17
lines changed

2 files changed

+12
-17
lines changed

lib/Data/ObjectDriver/SQL.pm

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ sub as_sql {
7979
if (blessed($col) && $col->isa('Data::ObjectDriver::SQL')) {
8080
push @bind_for_select, @{ $col->{bind} };
8181
@{ $col->{bind} } = ();
82-
$col->as_subquery(1, $alias);
82+
$col->as_subquery($alias);
8383
} else {
8484
if ($alias) {
8585
/(?:^|\.)\Q$alias\E$/ ? $col : "$col $alias";
@@ -120,7 +120,7 @@ sub as_sql {
120120
if (blessed($from) && $from->isa('Data::ObjectDriver::SQL')) {
121121
push @bind_for_from, @{$from->{bind}};
122122
@{$from->{bind}} = ();
123-
$from->as_subquery(0);
123+
$from->as_subquery;
124124
} else {
125125
$stmt->_add_index_hint($from);
126126
}
@@ -146,11 +146,10 @@ sub as_sql {
146146
}
147147

148148
sub as_subquery {
149-
my ($stmt, $use_as, $alias) = @_;
149+
my ($stmt, $alias) = @_;
150150
my $subquery = '(' . $stmt->as_sql . ')';
151151
$alias ||= $stmt->as;
152152
if ($alias) {
153-
$subquery .= ' AS' if $use_as;
154153
$subquery .= ' '. $alias;
155154
}
156155
$subquery;
@@ -336,7 +335,7 @@ sub _mk_term {
336335
$term = "$c $val->{op} " . $$value;
337336
} elsif (blessed($value) && $value->isa('Data::ObjectDriver::SQL')) {
338337
local $value->{as} = undef;
339-
$term = "$c $val->{op} ". $value->as_subquery(0);
338+
$term = "$c $val->{op} ". $value->as_subquery;
340339
push @bind, @{$value->{bind}};
341340
} else {
342341
$term = "$c $val->{op} ?";

t/11-sql-with-models.t

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,14 @@ $entry22->save;
3939
subtest 'as_subquery' => sub {
4040
my $stmt = Blog->driver->prepare_statement('Blog', { NAME => 'foo' }, { fetchonly => ['ID'] });
4141

42-
is(sql_normalize($stmt->as_subquery(1)), sql_normalize(<<'EOF'), 'right sql');
42+
is(sql_normalize($stmt->as_subquery), sql_normalize(<<'EOF'), 'right sql');
4343
(SELECT BLOG.ID FROM BLOG WHERE (BLOG.NAME = ?))
4444
EOF
4545
is_deeply($stmt->{bind}, ['foo'], 'right bind values');
4646

4747
$stmt->as('mysubquery');
4848

49-
is(sql_normalize($stmt->as_subquery(1)), sql_normalize(<<'EOF'), 'right sql');
50-
(SELECT BLOG.ID FROM BLOG WHERE (BLOG.NAME = ?)) AS mysubquery
51-
EOF
52-
53-
is(sql_normalize($stmt->as_subquery(0)), sql_normalize(<<'EOF'), 'right sql');
49+
is(sql_normalize($stmt->as_subquery), sql_normalize(<<'EOF'), 'right sql');
5450
(SELECT BLOG.ID FROM BLOG WHERE (BLOG.NAME = ?)) mysubquery
5551
EOF
5652
};
@@ -91,13 +87,13 @@ SELECT
9187
FROM ENTRY
9288
WHERE (ENTRY.BLOG_ID = BLOG.ID) AND (ENTRY.TEXT = ?)
9389
LIMIT 1
94-
) AS SUB_ALIAS
90+
) SUB_ALIAS
9591
FROM BLOG
9692
WHERE (BLOG.NAME = ?)
9793
EOF
9894

9995
$expected = sql_normalize(<<'EOF') if DodTestUtil->driver eq 'Oracle';
100-
SELECT BLOG.ID, BLOG.PARENT_ID, BLOG.NAME, (SELECT * FROM (SELECT ENTRY.ID FROM ENTRY WHERE (ENTRY.BLOG_ID = BLOG.ID) AND (ENTRY.TEXT = ?)) WHERE rownum <= 1) AS SUB_ALIAS FROM BLOG WHERE (BLOG.NAME = ?)
96+
SELECT BLOG.ID, BLOG.PARENT_ID, BLOG.NAME, (SELECT * FROM (SELECT ENTRY.ID FROM ENTRY WHERE (ENTRY.BLOG_ID = BLOG.ID) AND (ENTRY.TEXT = ?)) WHERE rownum <= 1) SUB_ALIAS FROM BLOG WHERE (BLOG.NAME = ?)
10197
EOF
10298

10399
is sql_normalize($stmt->as_sql), sql_normalize($expected), 'right sql';
@@ -127,13 +123,13 @@ SELECT
127123
FROM ENTRY
128124
WHERE (ENTRY.BLOG_ID = BLOG.ID) AND (ENTRY.TEXT = ?)
129125
LIMIT 1
130-
) AS SUB_ALIAS
126+
) SUB_ALIAS
131127
FROM BLOG
132128
WHERE (BLOG.NAME = ?)
133129
EOF
134130

135131
$expected = sql_normalize(<<'EOF') if DodTestUtil->driver eq 'Oracle';
136-
SELECT BLOG.ID, BLOG.PARENT_ID, BLOG.NAME, (SELECT * FROM (SELECT ENTRY.ID FROM ENTRY WHERE (ENTRY.BLOG_ID = BLOG.ID) AND (ENTRY.TEXT = ?)) WHERE rownum <= 1) AS SUB_ALIAS FROM BLOG WHERE (BLOG.NAME = ?)
132+
SELECT BLOG.ID, BLOG.PARENT_ID, BLOG.NAME, (SELECT * FROM (SELECT ENTRY.ID FROM ENTRY WHERE (ENTRY.BLOG_ID = BLOG.ID) AND (ENTRY.TEXT = ?)) WHERE rownum <= 1) SUB_ALIAS FROM BLOG WHERE (BLOG.NAME = ?)
137133
EOF
138134

139135
is sql_normalize($stmt->as_sql), sql_normalize($expected), 'right sql';
@@ -165,7 +161,7 @@ EOF
165161
is sql_normalize($stmt->as_sql), sql_normalize(<<'EOF');
166162
SELECT
167163
ENTRY.ID, ENTRY.BLOG_ID, ENTRY.TITLE, ENTRY.TEXT, count(*) COUNT,
168-
(SELECT BLOG.ID, BLOG.PARENT_ID, BLOG.NAME FROM BLOG) AS SUB
164+
(SELECT BLOG.ID, BLOG.PARENT_ID, BLOG.NAME FROM BLOG) SUB
169165
FROM ENTRY
170166
GROUP BY BLOG_ID
171167
HAVING (count(*) = ?) AND (SUB = ?)
@@ -372,7 +368,7 @@ SELECT
372368
BLOG.ID,
373369
BLOG.PARENT_ID,
374370
BLOG.NAME,
375-
(SELECT max(ID) FROM ENTRY WHERE (ENTRY.BLOG_ID = BLOG.ID) AND (ENTRY.ID < ?)) AS SUB1
371+
(SELECT max(ID) FROM ENTRY WHERE (ENTRY.BLOG_ID = BLOG.ID) AND (ENTRY.ID < ?)) SUB1
376372
FROM
377373
BLOG,
378374
(SELECT ENTRY.ID FROM ENTRY WHERE (ENTRY.TEXT = ?)) SUB2

0 commit comments

Comments
 (0)