summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Dorn <jeremy@jeremydorn.com>2013-07-01 07:27:06 -0700
committerJeremy Dorn <jeremy@jeremydorn.com>2013-07-01 07:27:06 -0700
commita8546539505e6dc388303ee89dcde7c84c338dd4 (patch)
tree26da77580962281da562bad7ede40c2c1ab620ee
parentd7f10fbb2f871155cdd91b077acebb378e10a95c (diff)
parent38a4639611d53832d63c55f6f69a6f1785cec53c (diff)
downloadsql-formatter-a8546539505e6dc388303ee89dcde7c84c338dd4.zip
sql-formatter-a8546539505e6dc388303ee89dcde7c84c338dd4.tar.gz
sql-formatter-a8546539505e6dc388303ee89dcde7c84c338dd4.tar.bz2
Merge branch 'master' of https://github.com/adityagoyal/sql-formatter into adityagoyal-master
-rw-r--r--examples/examples.php5
-rw-r--r--lib/SqlFormatter.php28
2 files changed, 26 insertions, 7 deletions
diff --git a/examples/examples.php b/examples/examples.php
index 9d69182..97771ad 100644
--- a/examples/examples.php
+++ b/examples/examples.php
@@ -44,6 +44,11 @@ $statements = array(
< DATE_FORMAT(NOW(), '%Y-%c-%d') ORDER BY d.id LIMIT 2,10) a,
orc_scheme_detail b WHERE a.id = b.id",
+ "SELECT * from Table1 LEFT OUTER JOIN Table2 on Table1.id = Table2.id",
+
+ "SELECT * from Table1 LEFT
+ OUTER JOIN Table2 on Table1.id = Table2.id",
+
"SELECT * FROM MyTable WHERE id = 46",
"SELECT count(*),`Column1`,`Testing`, `Testing Three` FROM `Table1`
diff --git a/lib/SqlFormatter.php b/lib/SqlFormatter.php
index cff35f8..0e5e781 100644
--- a/lib/SqlFormatter.php
+++ b/lib/SqlFormatter.php
@@ -44,15 +44,18 @@ class SqlFormatter
'HOUR_SECOND', 'IDENTIFIED', 'IF', 'IFNULL', 'IGNORE', 'IN', 'INDEX', 'INDEXES', 'INFILE', 'INSERT', 'INSERT_ID', 'INSERT_METHOD', 'INTERVAL',
'INTO', 'INVOKER', 'IS', 'ISOLATION', 'KEY', 'KEYS', 'KILL', 'LAST_INSERT_ID', 'LEADING', 'LEVEL', 'LIKE', 'LINEAR',
'LINES', 'LOAD', 'LOCAL', 'LOCK', 'LOCKS', 'LOGS', 'LOW_PRIORITY', 'MARIA', 'MASTER', 'MASTER_CONNECT_RETRY', 'MASTER_HOST', 'MASTER_LOG_FILE',
- 'MATCH', 'MEDIUM', 'MERGE', 'MINUTE', 'MINUTE_SECOND', 'MIN_ROWS', 'MODE', 'MODIFY',
+ 'MATCH','MAX_CONNECTIONS_PER_HOUR', 'MAX_QUERIES_PER_HOUR', 'MAX_ROWS', 'MAX_UPDATES_PER_HOUR', 'MAX_USER_CONNECTIONS',
+ 'MEDIUM', 'MERGE', 'MINUTE', 'MINUTE_SECOND', 'MIN_ROWS', 'MODE', 'MODIFY',
'MONTH', 'MRG_MYISAM', 'MYISAM', 'NAMES', 'NATURAL', 'NOT', 'NOW()', 'NULL', 'OFFSET', 'ON', 'OPEN', 'OPTIMIZE', 'OPTION', 'OPTIONALLY',
'ON UPDATE', 'ON DELETE', 'OUTFILE', 'PACK_KEYS', 'PAGE', 'PARTIAL', 'PARTITION', 'PARTITIONS', 'PASSWORD', 'PRIMARY', 'PRIVILEGES', 'PROCEDURE',
- 'PROCESS', 'PROCESSLIST', 'PURGE', 'QUICK', 'RANGE', 'READ', 'READ_ONLY',
+ 'PROCESS', 'PROCESSLIST', 'PURGE', 'QUICK', 'RANGE', 'RAID0', 'RAID_CHUNKS', 'RAID_CHUNKSIZE','RAID_TYPE', 'READ', 'READ_ONLY',
'READ_WRITE', 'REFERENCES', 'REGEXP', 'RELOAD', 'RENAME', 'REPAIR', 'REPEATABLE', 'REPLACE', 'REPLICATION', 'RESET', 'RESTORE', 'RESTRICT',
'RETURN', 'RETURNS', 'REVOKE', 'RLIKE', 'ROLLBACK', 'ROW', 'ROWS', 'ROW_FORMAT', 'SECOND', 'SECURITY', 'SEPARATOR',
- 'SERIALIZABLE', 'SESSION', 'SHARE', 'SHOW', 'SHUTDOWN', 'SLAVE', 'SONAME', 'SOUNDS', 'SQL',
- 'SQL_CACHE', 'SQL_NO_CACHE', 'START', 'STARTING', 'STATUS', 'STOP', 'STORAGE',
- 'STRAIGHT_JOIN', 'STRING', 'SUPER', 'TABLE', 'TABLES', 'TEMPORARY', 'TERMINATED', 'THEN', 'TO', 'TRAILING', 'TRANSACTIONAL',
+ 'SERIALIZABLE', 'SESSION', 'SHARE', 'SHOW', 'SHUTDOWN', 'SLAVE', 'SONAME', 'SOUNDS', 'SQL', 'SQL_AUTO_IS_NULL', 'SQL_BIG_RESULT',
+ 'SQL_BIG_SELECTS', 'SQL_BIG_TABLES', 'SQL_BUFFER_RESULT', 'SQL_CALC_FOUND_ROWS', 'SQL_LOG_BIN', 'SQL_LOG_OFF', 'SQL_LOG_UPDATE',
+ 'SQL_LOW_PRIORITY_UPDATES', 'SQL_MAX_JOIN_SIZE', 'SQL_QUOTE_SHOW_CREATE', 'SQL_SAFE_UPDATES', 'SQL_SELECT_LIMIT', 'SQL_SLAVE_SKIP_COUNTER',
+ 'SQL_SMALL_RESULT', 'SQL_WARNINGS', 'SQL_CACHE', 'SQL_NO_CACHE', 'START', 'STARTING', 'STATUS', 'STOP', 'STORAGE',
+ 'STRAIGHT_JOIN', 'STRING', 'STRIPED', 'SUPER', 'TABLE', 'TABLES', 'TEMPORARY', 'TERMINATED', 'THEN', 'TO', 'TRAILING', 'TRANSACTIONAL', 'TRUE',
'TRUNCATE', 'TYPE', 'TYPES', 'UNCOMMITTED', 'UNIQUE', 'UNLOCK', 'UNSIGNED', 'USAGE', 'USE', 'USING', 'VARIABLES',
'VIEW', 'WHEN', 'WITH', 'WORK', 'WRITE', 'YEAR_MONTH'
);
@@ -65,7 +68,7 @@ class SqlFormatter
);
protected static $reserved_newline = array(
- 'LEFT JOIN', 'RIGHT JOIN', 'OUTER JOIN', 'INNER JOIN', 'JOIN', 'XOR', 'OR', 'AND'
+ 'LEFT OUTER JOIN', 'RIGHT OUTER JOIN', 'LEFT JOIN', 'RIGHT JOIN', 'OUTER JOIN', 'INNER JOIN', 'JOIN', 'XOR', 'OR', 'AND'
);
// Punctuation that can be used as a boundary between other tokens
@@ -696,7 +699,7 @@ class SqlFormatter
$result .= $token[self::TOKEN_VALUE];
}
-
+ $result = self::remove_blank_lines($result);
return $result;
}
@@ -978,4 +981,15 @@ class SqlFormatter
if(isset(self::$cli)) return self::$cli;
else return php_sapi_name() === 'cli';
}
+
+ /**
+ * Removes blank line between and before sql statements.
+ *@param String $sql from which blank lines need to be removed
+ *
+ * @return String sql without blank lines
+ */
+ private static function remove_blank_lines($sql)
+ {
+ return preg_replace('/^\n+|^[\t\s]*\n+/m','',$sql);
+ }
}