|
|
@@ -0,0 +1,48 @@
|
|
|
+<?php
|
|
|
+/**
|
|
|
+ * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
|
|
+ * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
|
|
+ *
|
|
|
+ * Licensed under The MIT License
|
|
|
+ * For full copyright and license information, please see the LICENSE.txt
|
|
|
+ * Redistributions of files must retain the above copyright notice.
|
|
|
+ *
|
|
|
+ * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
|
|
+ * @link http://cakephp.org CakePHP(tm) Project
|
|
|
+ * @since 3.0.0
|
|
|
+ * @license http://www.opensource.org/licenses/mit-license.php MIT License
|
|
|
+ */
|
|
|
+namespace Cake\Database;
|
|
|
+
|
|
|
+use Cake\Database\QueryCompiler;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Responsible for compiling a Query object into its SQL representation
|
|
|
+ * for SQLite
|
|
|
+ *
|
|
|
+ * @internal
|
|
|
+ */
|
|
|
+class SqliteCompiler extends QueryCompiler
|
|
|
+{
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Builds the SQL string for all the UNION clauses in this query, when dealing
|
|
|
+ * with query objects it will also transform them using their configured SQL
|
|
|
+ * dialect.
|
|
|
+ *
|
|
|
+ * @param array $parts list of queries to be operated with UNION
|
|
|
+ * @param \Cake\Database\Query $query The query that is being compiled
|
|
|
+ * @param \Cake\Database\ValueBinder $generator the placeholder generator to be used in expressions
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ protected function _buildUnionPart($parts, $query, $generator)
|
|
|
+ {
|
|
|
+ $parts = array_map(function ($p) use ($generator) {
|
|
|
+ $p['query'] = $p['query']->sql($generator);
|
|
|
+ $p['query'] = $p['query'][0] === '(' ? trim($p['query'], '()') : $p['query'];
|
|
|
+ $prefix = $p['all'] ? 'ALL' : '';
|
|
|
+ return sprintf('%s %s', $prefix, $p['query']);
|
|
|
+ }, $parts);
|
|
|
+ return sprintf("\nUNION %s", implode("\nUNION ", $parts));
|
|
|
+ }
|
|
|
+}
|