Skip to content

Commit 7fced19

Browse files
committed
all Postgres operators
1 parent 1780fab commit 7fced19

File tree

2 files changed

+13
-20
lines changed

2 files changed

+13
-20
lines changed

src/Tokenizer.php

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,20 @@ protected function token()
117117
return $token;
118118
}
119119

120-
if ($token = $this->consume('[\*,.+-\/=;<>]')) {
121-
return $token;
120+
if ($token = $this->consume('\@\w+')) {
121+
return $token; // @var
122122
}
123123

124-
if ($token = $this->consume('\@\w+')) {
125-
return $token;
124+
if ($token = $this->consume(':\w+')) {
125+
return $token; // :var (PDO placeholder)
126+
}
127+
128+
if ($token = $this->consume('[+\-\*\/.,!=^|&<>:@%~#]+')) {
129+
return $token; // various operators
130+
}
131+
132+
if ($token = $this->consume(';')) {
133+
return $token; // statement separator (when $delimiter_pattern has been modified)
126134
}
127135

128136
if ($token = $this->quoted()) {
@@ -133,10 +141,6 @@ protected function token()
133141
return $tokens;
134142
}
135143

136-
if ($token = $this->placeholder()) {
137-
return $token;
138-
}
139-
140144
if ($token = $this->dollarquoted()) {
141145
return $token;
142146
}
@@ -230,18 +234,6 @@ protected function grouped()
230234
return null;
231235
}
232236

233-
/**
234-
* @return string|null
235-
*/
236-
protected function placeholder()
237-
{
238-
if ($token = $this->consume(':\w+')) {
239-
return $token;
240-
}
241-
242-
return null;
243-
}
244-
245237
/**
246238
* @return string|null
247239
*/

test/test.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ function () {
3636
eq(Tokenizer::tokenize('CREATE FUNCTION foo AS $$RETURN $1$$;'), [["CREATE", " ", "FUNCTION", " ", "foo", " ", "AS", " ", '$$RETURN $1$$']], "stored procedure");
3737
eq(Tokenizer::tokenize('SELECT $$FOO$$; SELECT $$BAR$$'), [["SELECT", " ", '$$FOO$$'], ["SELECT", " ", '$$BAR$$']], "dollar-quoted strings");
3838
eq(Tokenizer::tokenize("SELECT 'foo\\'\\\\'"), [["SELECT", " ", "'foo\\'\\\\'"]]);
39+
eq(Tokenizer::tokenize("SELECT '{\"one\":\"two\"}'::jsonb"), [["SELECT", " ", "'{\"one\":\"two\"}'", "::", "jsonb"]]);
3940
}
4041
);
4142

0 commit comments

Comments
 (0)