Skip to content

Commit d38d41a

Browse files
staabmclxmstaab
andauthored
added left join coverage (#126)
Co-authored-by: Markus Staab <[email protected]>
1 parent 019eb32 commit d38d41a

File tree

3 files changed

+229
-0
lines changed

3 files changed

+229
-0
lines changed

.phpstan-dba.cache

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,111 @@
5050
1 => NULL,
5151
),
5252
),
53+
'SELECT a.email, b.adaid, b.gesperrt FROM ada a LEFT JOIN ada b ON a.adaid=b.adaid' =>
54+
array (
55+
'error' => NULL,
56+
'result' =>
57+
array (
58+
1 =>
59+
PHPStan\Type\Constant\ConstantArrayType::__set_state(array(
60+
'keyType' =>
61+
PHPStan\Type\UnionType::__set_state(array(
62+
'types' =>
63+
array (
64+
0 =>
65+
PHPStan\Type\Constant\ConstantStringType::__set_state(array(
66+
'value' => 'adaid',
67+
'isClassString' => false,
68+
)),
69+
1 =>
70+
PHPStan\Type\Constant\ConstantStringType::__set_state(array(
71+
'value' => 'email',
72+
'isClassString' => false,
73+
)),
74+
2 =>
75+
PHPStan\Type\Constant\ConstantStringType::__set_state(array(
76+
'value' => 'gesperrt',
77+
'isClassString' => false,
78+
)),
79+
),
80+
)),
81+
'itemType' =>
82+
PHPStan\Type\UnionType::__set_state(array(
83+
'types' =>
84+
array (
85+
0 =>
86+
PHPStan\Type\IntegerRangeType::__set_state(array(
87+
'min' => -128,
88+
'max' => 4294967295,
89+
)),
90+
1 =>
91+
PHPStan\Type\StringType::__set_state(array(
92+
)),
93+
2 =>
94+
PHPStan\Type\NullType::__set_state(array(
95+
)),
96+
),
97+
)),
98+
'allArrays' => NULL,
99+
'keyTypes' =>
100+
array (
101+
0 =>
102+
PHPStan\Type\Constant\ConstantStringType::__set_state(array(
103+
'value' => 'email',
104+
'isClassString' => false,
105+
)),
106+
1 =>
107+
PHPStan\Type\Constant\ConstantStringType::__set_state(array(
108+
'value' => 'adaid',
109+
'isClassString' => false,
110+
)),
111+
2 =>
112+
PHPStan\Type\Constant\ConstantStringType::__set_state(array(
113+
'value' => 'gesperrt',
114+
'isClassString' => false,
115+
)),
116+
),
117+
'valueTypes' =>
118+
array (
119+
0 =>
120+
PHPStan\Type\StringType::__set_state(array(
121+
)),
122+
1 =>
123+
PHPStan\Type\UnionType::__set_state(array(
124+
'types' =>
125+
array (
126+
0 =>
127+
PHPStan\Type\IntegerRangeType::__set_state(array(
128+
'min' => 0,
129+
'max' => 4294967295,
130+
)),
131+
1 =>
132+
PHPStan\Type\NullType::__set_state(array(
133+
)),
134+
),
135+
)),
136+
2 =>
137+
PHPStan\Type\UnionType::__set_state(array(
138+
'types' =>
139+
array (
140+
0 =>
141+
PHPStan\Type\IntegerRangeType::__set_state(array(
142+
'min' => -128,
143+
'max' => 127,
144+
)),
145+
1 =>
146+
PHPStan\Type\NullType::__set_state(array(
147+
)),
148+
),
149+
)),
150+
),
151+
'nextAutoIndex' => 0,
152+
'optionalKeys' =>
153+
array (
154+
),
155+
)),
156+
),
157+
),
53158
'SELECT akid FROM ak WHERE eadavk>1.0' =>
54159
array (
55160
'error' => NULL,
@@ -1601,6 +1706,18 @@
16011706
)),
16021707
),
16031708
),
1709+
'SELECT email, adaid, gesperrt, freigabe1u1 FROM ada WHERE adaid=?' =>
1710+
array (
1711+
'error' =>
1712+
staabm\PHPStanDba\Error::__set_state(array(
1713+
'message' => 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL/MariaDB server version for the right syntax to use near \'? LIMIT 0\' at line 1',
1714+
'code' => 1064,
1715+
)),
1716+
'result' =>
1717+
array (
1718+
3 => NULL,
1719+
),
1720+
),
16041721
'SELECT email, adaid, gesperrt, freigabe1u1 FROM ada WHERE email=\'foo\'' =>
16051722
array (
16061723
'error' => NULL,

.phpunit-phpstan-dba.cache

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,111 @@
150150
'code' => 1146,
151151
)),
152152
),
153+
'SELECT a.email, b.adaid, b.gesperrt FROM ada a LEFT JOIN ada b ON a.adaid=b.adaid' =>
154+
array (
155+
'error' => NULL,
156+
'result' =>
157+
array (
158+
1 =>
159+
PHPStan\Type\Constant\ConstantArrayType::__set_state(array(
160+
'keyType' =>
161+
PHPStan\Type\UnionType::__set_state(array(
162+
'types' =>
163+
array (
164+
0 =>
165+
PHPStan\Type\Constant\ConstantStringType::__set_state(array(
166+
'value' => 'adaid',
167+
'isClassString' => false,
168+
)),
169+
1 =>
170+
PHPStan\Type\Constant\ConstantStringType::__set_state(array(
171+
'value' => 'email',
172+
'isClassString' => false,
173+
)),
174+
2 =>
175+
PHPStan\Type\Constant\ConstantStringType::__set_state(array(
176+
'value' => 'gesperrt',
177+
'isClassString' => false,
178+
)),
179+
),
180+
)),
181+
'itemType' =>
182+
PHPStan\Type\UnionType::__set_state(array(
183+
'types' =>
184+
array (
185+
0 =>
186+
PHPStan\Type\IntegerRangeType::__set_state(array(
187+
'min' => -128,
188+
'max' => 4294967295,
189+
)),
190+
1 =>
191+
PHPStan\Type\StringType::__set_state(array(
192+
)),
193+
2 =>
194+
PHPStan\Type\NullType::__set_state(array(
195+
)),
196+
),
197+
)),
198+
'allArrays' => NULL,
199+
'keyTypes' =>
200+
array (
201+
0 =>
202+
PHPStan\Type\Constant\ConstantStringType::__set_state(array(
203+
'value' => 'email',
204+
'isClassString' => false,
205+
)),
206+
1 =>
207+
PHPStan\Type\Constant\ConstantStringType::__set_state(array(
208+
'value' => 'adaid',
209+
'isClassString' => false,
210+
)),
211+
2 =>
212+
PHPStan\Type\Constant\ConstantStringType::__set_state(array(
213+
'value' => 'gesperrt',
214+
'isClassString' => false,
215+
)),
216+
),
217+
'valueTypes' =>
218+
array (
219+
0 =>
220+
PHPStan\Type\StringType::__set_state(array(
221+
)),
222+
1 =>
223+
PHPStan\Type\UnionType::__set_state(array(
224+
'types' =>
225+
array (
226+
0 =>
227+
PHPStan\Type\IntegerRangeType::__set_state(array(
228+
'min' => 0,
229+
'max' => 4294967295,
230+
)),
231+
1 =>
232+
PHPStan\Type\NullType::__set_state(array(
233+
)),
234+
),
235+
)),
236+
2 =>
237+
PHPStan\Type\UnionType::__set_state(array(
238+
'types' =>
239+
array (
240+
0 =>
241+
PHPStan\Type\IntegerRangeType::__set_state(array(
242+
'min' => -128,
243+
'max' => 127,
244+
)),
245+
1 =>
246+
PHPStan\Type\NullType::__set_state(array(
247+
)),
248+
),
249+
)),
250+
),
251+
'nextAutoIndex' => 0,
252+
'optionalKeys' =>
253+
array (
254+
),
255+
)),
256+
),
257+
),
153258
'SELECT akid FROM ak WHERE eadavk>1.0' =>
154259
array (
155260
'error' => NULL,

tests/data/pdo.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,11 @@ public function updateQuery(PDO $pdo)
111111
$stmt = $pdo->query($query, PDO::FETCH_ASSOC);
112112
assertType('PDOStatement', $stmt);
113113
}
114+
115+
public function leftJoinQuery(PDO $pdo)
116+
{
117+
$query = 'SELECT a.email, b.adaid, b.gesperrt FROM ada a LEFT JOIN ada b ON a.adaid=b.adaid';
118+
$stmt = $pdo->query($query, PDO::FETCH_ASSOC);
119+
assertType('PDOStatement<array{email: string, adaid: int<0, 4294967295>|null, gesperrt: int<-128, 127>|null}>', $stmt);
120+
}
114121
}

0 commit comments

Comments
 (0)