Skip to content

Commit f7eefa9

Browse files
committed
detect new mariadb grammar class
1 parent 3a7b2ef commit f7eefa9

File tree

21 files changed

+29
-21
lines changed

21 files changed

+29
-21
lines changed

src/Concerns/IdentifiesDriver.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
namespace Tpetry\QueryExpressions\Concerns;
66

77
use Illuminate\Database\Grammar;
8+
use Illuminate\Database\Query\Grammars\MariaDbGrammar as MariaQueryGrammar;
89
use Illuminate\Database\Query\Grammars\MySqlGrammar as MysqlQueryGrammar;
910
use Illuminate\Database\Query\Grammars\PostgresGrammar as PgsqlQueryGrammar;
1011
use Illuminate\Database\Query\Grammars\SQLiteGrammar as SqliteQueryGrammar;
1112
use Illuminate\Database\Query\Grammars\SqlServerGrammar as SqlsrvQueryGrammar;
13+
use Illuminate\Database\Schema\Grammars\MariaDbGrammar as MariaSchemaGrammar;
1214
use Illuminate\Database\Schema\Grammars\MySqlGrammar as MysqlSchemaGrammar;
1315
use Illuminate\Database\Schema\Grammars\PostgresGrammar as PgsqlSchemaGrammar;
1416
use Illuminate\Database\Schema\Grammars\SQLiteGrammar as SqliteSchemaGrammar;
@@ -18,11 +20,12 @@
1820
trait IdentifiesDriver
1921
{
2022
/**
21-
* @return 'mysql'|'pgsql'|'sqlite'|'sqlsrv'
23+
* @return 'mariadb'|'mysql'|'pgsql'|'sqlite'|'sqlsrv'
2224
*/
2325
protected function identify(Grammar $grammar): string
2426
{
2527
return match (true) {
28+
$this->isMaria($grammar) => 'mariadb',
2629
$this->isMysql($grammar) => 'mysql',
2730
$this->isPgsql($grammar) => 'pgsql',
2831
$this->isSqlite($grammar) => 'sqlite',
@@ -31,6 +34,11 @@ protected function identify(Grammar $grammar): string
3134
};
3235
}
3336

37+
protected function isMaria(Grammar $grammar): bool
38+
{
39+
return $grammar instanceof MariaQueryGrammar || $grammar instanceof MariaSchemaGrammar;
40+
}
41+
3442
protected function isMysql(Grammar $grammar): bool
3543
{
3644
return $grammar instanceof MysqlQueryGrammar || $grammar instanceof MysqlSchemaGrammar;

src/Function/Aggregate/CountFilter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function getValue(Grammar $grammar): string
2424
$filter = $this->stringize($grammar, $this->filter);
2525

2626
return match ($this->identify($grammar)) {
27-
'mysql' => "sum({$filter})",
27+
'mariadb', 'mysql' => "sum({$filter})",
2828
'pgsql', 'sqlite' => "count(*) filter (where {$filter})",
2929
'sqlsrv' => "sum(case when {$filter} then 1 else 0 end)",
3030
};

src/Function/Aggregate/SumFilter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public function getValue(Grammar $grammar): string
2626
$filter = $this->stringize($grammar, $this->filter);
2727

2828
return match ($this->identify($grammar)) {
29-
'mysql', 'sqlsrv' => "sum(case when {$filter} then {$value} else 0 end)",
29+
'mariadb', 'mysql', 'sqlsrv' => "sum(case when {$filter} then {$value} else 0 end)",
3030
'pgsql', 'sqlite' => "sum({$value}) filter (where {$filter})",
3131
};
3232
}

src/Function/Comparison/StrListContains.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public function getValue(Grammar $grammar)
2828

2929
// PostgreSQL: The string_to_array is not used because citext values would be cast to case-sensitive text type
3030
return match ($this->identify($grammar)) {
31-
'mysql' => "FIND_IN_SET({$str}, {$strList}) > 0",
31+
'mariadb', 'mysql' => "FIND_IN_SET({$str}, {$strList}) > 0",
3232
'pgsql', 'sqlite' => "({$strList} like {$str} or {$strList} like (({$str})||',%') or {$strList} like ('%,'||({$str})||',%') or {$strList} like ('%,'||({$str})))",
3333
'sqlsrv' => "({$strList} like {$str} or {$strList} like concat({$str},',%') or {$strList} like concat('%,',{$str},',%') or {$strList} like concat('%,',{$str}))",
3434
};

src/Function/Conditional/Greatest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public function getValue(Grammar $grammar): string
2020
$expressionsStr = implode(', ', $expressions);
2121

2222
return match ($this->identify($grammar)) {
23-
'mysql', 'pgsql' => "greatest({$expressionsStr})",
23+
'mariadb', 'mysql', 'pgsql' => "greatest({$expressionsStr})",
2424
'sqlite' => "max({$expressionsStr})",
2525
'sqlsrv' => "(select max(n) from (values {$expressionsStr}) as v(n))",
2626
};

src/Function/Conditional/Least.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public function getValue(Grammar $grammar): string
2020
$expressionsStr = implode(', ', $expressions);
2121

2222
return match ($this->identify($grammar)) {
23-
'mysql', 'pgsql' => "least({$expressionsStr})",
23+
'mariadb', 'mysql', 'pgsql' => "least({$expressionsStr})",
2424
'sqlite' => "min({$expressionsStr})",
2525
'sqlsrv' => "(select min(n) from (values {$expressionsStr}) as v(n))",
2626
};

src/Function/Math/Abs.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function getValue(Grammar $grammar): string
2424
$expression = $this->stringize($grammar, $this->expression);
2525

2626
return match ($this->identify($grammar)) {
27-
'mysql', 'sqlite' => "(abs({$expression}))",
27+
'mariadb', 'mysql', 'sqlite' => "(abs({$expression}))",
2828
'pgsql', 'sqlsrv' => "abs({$expression})",
2929
};
3030
}

src/Function/String/Concat.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public function getValue(Grammar $grammar): string
1717
$expressions = $this->getExpressions($grammar);
1818

1919
return match ($this->identify($grammar)) {
20-
'mysql', 'sqlsrv' => sprintf('(concat(%s))', implode(',', $expressions)),
20+
'mariadb', 'mysql', 'sqlsrv' => sprintf('(concat(%s))', implode(',', $expressions)),
2121
'pgsql', 'sqlite' => sprintf('(%s)', implode('||', $expressions)),
2222
};
2323
}

src/Function/String/Lower.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function getValue(Grammar $grammar): string
2424
$expression = $this->stringize($grammar, $this->expression);
2525

2626
return match ($this->identify($grammar)) {
27-
'mysql', 'sqlite' => "(lower({$expression}))",
27+
'mariadb', 'mysql', 'sqlite' => "(lower({$expression}))",
2828
'pgsql', 'sqlsrv' => "lower({$expression})",
2929
};
3030
}

src/Function/String/Upper.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function getValue(Grammar $grammar): string
2424
$expression = $this->stringize($grammar, $this->expression);
2525

2626
return match ($this->identify($grammar)) {
27-
'mysql', 'sqlite' => "(upper({$expression}))",
27+
'mariadb', 'mysql', 'sqlite' => "(upper({$expression}))",
2828
'pgsql', 'sqlsrv' => "upper({$expression})",
2929
};
3030
}

0 commit comments

Comments
 (0)