Skip to content

Commit 34016b9

Browse files
committed
TableNameBuilder: Now using UNION ALL when using data arrays to build ad-hoc tables
1 parent 16ffdbc commit 34016b9

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

src/Builder/Traits/TableNameBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ protected function buildTableName(?string $alias, $name): string {
3434
$parts[] = sprintf("SELECT %s", implode(', ', $values));
3535
}
3636
}
37-
$name = '(' . implode("\n\tUNION\n\t", $parts) . ')';
37+
$name = '(' . implode("\n\tUNION ALL\n\t", $parts) . ')';
3838
}
3939
if((is_string($name) || $name instanceof VirtualTable) && $this->db()->getVirtualTables()->has($name)) {
4040
$select = (string) $this->db()->getVirtualTables()->get($name);

tests/Builder/SelectTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public function testFromArray(): void {
3737
->from('a', [['a' => 1, 'b' => 3], ['a' => 2, 'b' => 2], ['a' => 3, 'b' => 1]])
3838
->joinInner('b', [['a' => 1, 'b' => 3], ['a' => 2, 'b' => 2], ['a' => 3, 'b' => 1]])
3939
->asString();
40-
self::assertEquals("SELECT\n\ta.a,\n\tb.b\nFROM\n\t(SELECT 1 AS `a`, 3 AS `b`\n\tUNION\n\tSELECT 2 AS `a`, 2 AS `b`\n\tUNION\n\tSELECT 3 AS `a`, 1 AS `b`) a\nINNER JOIN\n\t(SELECT 1 AS `a`, 3 AS `b`\n\tUNION\n\tSELECT 2 AS `a`, 2 AS `b`\n\tUNION\n\tSELECT 3 AS `a`, 1 AS `b`) b\n", $str);
40+
self::assertEquals("SELECT\n\ta.a,\n\tb.b\nFROM\n\t(SELECT 1 AS `a`, 3 AS `b`\n\tUNION ALL\n\tSELECT 2 AS `a`, 2 AS `b`\n\tUNION ALL\n\tSELECT 3 AS `a`, 1 AS `b`) a\nINNER JOIN\n\t(SELECT 1 AS `a`, 3 AS `b`\n\tUNION ALL\n\tSELECT 2 AS `a`, 2 AS `b`\n\tUNION ALL\n\tSELECT 3 AS `a`, 1 AS `b`) b\n", $str);
4141
}
4242

4343
public function testMultipleFrom(): void {
@@ -553,6 +553,6 @@ public function testArrayTables(): void {
553553
->from('a', range(1, 9))
554554
->asString();
555555

556-
self::assertEquals("SELECT\n\ta.value\nFROM\n\t(SELECT 1 AS `value`\n\tUNION\n\tSELECT 2 AS `value`\n\tUNION\n\tSELECT 3 AS `value`\n\tUNION\n\tSELECT 4 AS `value`\n\tUNION\n\tSELECT 5 AS `value`\n\tUNION\n\tSELECT 6 AS `value`\n\tUNION\n\tSELECT 7 AS `value`\n\tUNION\n\tSELECT 8 AS `value`\n\tUNION\n\tSELECT 9 AS `value`) a\n", $vt1);
556+
self::assertEquals("SELECT\n\ta.value\nFROM\n\t(SELECT 1 AS `value`\n\tUNION ALL\n\tSELECT 2 AS `value`\n\tUNION ALL\n\tSELECT 3 AS `value`\n\tUNION ALL\n\tSELECT 4 AS `value`\n\tUNION ALL\n\tSELECT 5 AS `value`\n\tUNION ALL\n\tSELECT 6 AS `value`\n\tUNION ALL\n\tSELECT 7 AS `value`\n\tUNION ALL\n\tSELECT 8 AS `value`\n\tUNION ALL\n\tSELECT 9 AS `value`) a\n", $vt1);
557557
}
558558
}

0 commit comments

Comments
 (0)