Skip to content

Commit bc4fa31

Browse files
committed
Add better type description for Dbal\DbalInterface::getTableIndexes
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
1 parent a3ba333 commit bc4fa31

5 files changed

Lines changed: 59 additions & 64 deletions

File tree

libraries/classes/DatabaseInterface.php

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1018,7 +1018,25 @@ public function getColumnNames(
10181018
* @param string $table name of the table whose indexes are to be retrieved
10191019
* @param mixed $link mysql link resource
10201020
*
1021-
* @return array
1021+
* @return array<int, array<string, string|null>>
1022+
* @psalm-return array<int, array{
1023+
* Table: string,
1024+
* Non_unique: '0'|'1',
1025+
* Key_name: string,
1026+
* Seq_in_index: string,
1027+
* Column_name: string|null,
1028+
* Collation: 'A'|'D'|null,
1029+
* Cardinality: string,
1030+
* Sub_part: string|null,
1031+
* Packed: string|null,
1032+
* Null: string|null,
1033+
* Index_type: 'BTREE'|'FULLTEXT'|'HASH'|'RTREE',
1034+
* Comment: string,
1035+
* Index_comment: string,
1036+
* Ignored?: string,
1037+
* Visible?: string,
1038+
* Expression?: string|null
1039+
* }>
10221040
*/
10231041
public function getTableIndexes(
10241042
string $database,

libraries/classes/Dbal/DbalInterface.php

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,25 @@ public function getColumnNames(
231231
* @param string $table name of the table whose indexes are to be retrieved
232232
* @param mixed $link mysql link resource
233233
*
234-
* @return array
234+
* @return array<int, array<string, string|null>>
235+
* @psalm-return array<int, array{
236+
* Table: string,
237+
* Non_unique: '0'|'1',
238+
* Key_name: string,
239+
* Seq_in_index: string,
240+
* Column_name: string|null,
241+
* Collation: 'A'|'D'|null,
242+
* Cardinality: string,
243+
* Sub_part: string|null,
244+
* Packed: string|null,
245+
* Null: string|null,
246+
* Index_type: 'BTREE'|'FULLTEXT'|'HASH'|'RTREE',
247+
* Comment: string,
248+
* Index_comment: string,
249+
* Ignored?: string,
250+
* Visible?: string,
251+
* Expression?: string|null
252+
* }>
235253
*/
236254
public function getTableIndexes(
237255
string $database,

libraries/classes/Index.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ private static function loadIndexes($table, $schema): bool
239239
/**
240240
* Add column to index
241241
*
242-
* @param string[] $params column params
242+
* @param array<string, string|null> $params column params
243243
*/
244244
public function addColumn(array $params): void
245245
{

phpstan-baseline.neon

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2550,11 +2550,6 @@ parameters:
25502550
count: 1
25512551
path: libraries/classes/DatabaseInterface.php
25522552

2553-
-
2554-
message: "#^Method PhpMyAdmin\\\\DatabaseInterface\\:\\:getTableIndexes\\(\\) return type has no value type specified in iterable type array\\.$#"
2555-
count: 1
2556-
path: libraries/classes/DatabaseInterface.php
2557-
25582553
-
25592554
message: "#^Method PhpMyAdmin\\\\DatabaseInterface\\:\\:getTables\\(\\) return type has no value type specified in iterable type array\\.$#"
25602555
count: 1
@@ -2700,11 +2695,6 @@ parameters:
27002695
count: 1
27012696
path: libraries/classes/Dbal/DbalInterface.php
27022697

2703-
-
2704-
message: "#^Method PhpMyAdmin\\\\Dbal\\\\DbalInterface\\:\\:getTableIndexes\\(\\) return type has no value type specified in iterable type array\\.$#"
2705-
count: 1
2706-
path: libraries/classes/Dbal/DbalInterface.php
2707-
27082698
-
27092699
message: "#^Method PhpMyAdmin\\\\Dbal\\\\DbalInterface\\:\\:getTables\\(\\) return type has no value type specified in iterable type array\\.$#"
27102700
count: 1

psalm-baseline.xml

Lines changed: 20 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -5019,7 +5019,7 @@
50195019
<code>$table</code>
50205020
<code>$table</code>
50215021
</MixedArgumentTypeCoercion>
5022-
<MixedArrayAccess occurrences="19">
5022+
<MixedArrayAccess occurrences="17">
50235023
<code>$_POST['Or' . $rowIndex][$columnIndex]</code>
50245024
<code>$_POST['criteriaColumn'][$columnIndex]</code>
50255025
<code>$foreigner['foreign_field']</code>
@@ -5028,8 +5028,6 @@
50285028
<code>$foreigner['foreign_table']</code>
50295029
<code>$foreigner['foreign_table']</code>
50305030
<code>$foreigner['foreign_table']</code>
5031-
<code>$index['Column_name']</code>
5032-
<code>$index['Non_unique']</code>
50335031
<code>$oneKey['index_list']</code>
50345032
<code>$oneKey['ref_index_list']</code>
50355033
<code>$oneKey['ref_table_name']</code>
@@ -5064,7 +5062,7 @@
50645062
<code>$tsize[$table]</code>
50655063
<code>$tsize[$table]</code>
50665064
</MixedArrayOffset>
5067-
<MixedAssignment occurrences="51">
5065+
<MixedAssignment occurrences="50">
50685066
<code>$GLOBALS[${'cur' . $or}][$newColumnCount]</code>
50695067
<code>$clause</code>
50705068
<code>$clause</code>
@@ -5080,7 +5078,6 @@
50805078
<code>$foreigner</code>
50815079
<code>$foreigner</code>
50825080
<code>$index</code>
5083-
<code>$index</code>
50845081
<code>$indexColumns</code>
50855082
<code>$isWhere</code>
50865083
<code>$masterTable</code>
@@ -5121,11 +5118,10 @@
51215118
<code>array</code>
51225119
<code>string</code>
51235120
</MixedInferredReturnType>
5124-
<MixedOperand occurrences="12">
5121+
<MixedOperand occurrences="11">
51255122
<code>$_POST['Or' . $rowIndex][$columnIndex]</code>
51265123
<code>$clause</code>
51275124
<code>$columns[$columnIndex]</code>
5128-
<code>$index['Column_name']</code>
51295125
<code>$select</code>
51305126
<code>$selected['and'] ?? ''</code>
51315127
<code>$selected['or'] ?? ''</code>
@@ -5150,6 +5146,9 @@
51505146
<code>$sortOrder</code>
51515147
<code>$table</code>
51525148
</PossiblyNullArgument>
5149+
<PossiblyNullOperand occurrences="1">
5150+
<code>$index['Column_name']</code>
5151+
</PossiblyNullOperand>
51535152
<PossiblyNullPropertyAssignmentValue occurrences="1">
51545153
<code>null</code>
51555154
</PossiblyNullPropertyAssignmentValue>
@@ -5737,8 +5736,9 @@
57375736
<code>SessionCache::get('mysql_cur_user')</code>
57385737
<code>reset($columns)</code>
57395738
</MixedReturnStatement>
5740-
<MixedReturnTypeCoercion occurrences="2">
5739+
<MixedReturnTypeCoercion occurrences="4">
57415740
<code>$this-&gt;fetchResult($sql, null, 'Field', $link)</code>
5741+
<code>$this-&gt;fetchResult($sql, null, null, $link)</code>
57425742
<code>string[]</code>
57435743
</MixedReturnTypeCoercion>
57445744
<NullableReturnStatement occurrences="2">
@@ -7719,27 +7719,16 @@
77197719
<DocblockTypeContradiction occurrences="1">
77207720
<code>$this-&gt;packed === null</code>
77217721
</DocblockTypeContradiction>
7722-
<MixedArgument occurrences="4">
7723-
<code>$_each_index</code>
7724-
<code>$_each_index</code>
7722+
<MixedArgument occurrences="2">
77257723
<code>$column</code>
77267724
<code>$params['columns']</code>
77277725
</MixedArgument>
7728-
<MixedArrayAccess occurrences="1">
7729-
<code>$_each_index['Key_name']</code>
7730-
</MixedArrayAccess>
7731-
<MixedArrayAssignment occurrences="1">
7732-
<code>$_each_index['Schema']</code>
7733-
</MixedArrayAssignment>
7734-
<MixedArrayOffset occurrences="3">
7726+
<MixedArrayOffset occurrences="1">
77357727
<code>$columns['sub_parts'][$key]</code>
7736-
<code>self::$registry[$schema][$table][$keyName]</code>
7737-
<code>self::$registry[$schema][$table][$keyName]</code>
77387728
</MixedArrayOffset>
7739-
<MixedAssignment occurrences="16">
7729+
<MixedAssignment occurrences="15">
77407730
<code>$column</code>
77417731
<code>$key</code>
7742-
<code>$keyName</code>
77437732
<code>$name</code>
77447733
<code>$sub_part</code>
77457734
<code>$this-&gt;choice</code>
@@ -7754,9 +7743,9 @@
77547743
<code>$this-&gt;table</code>
77557744
<code>$this-&gt;type</code>
77567745
</MixedAssignment>
7757-
<MixedPropertyTypeCoercion occurrences="1">
7758-
<code>self::$registry</code>
7759-
</MixedPropertyTypeCoercion>
7746+
<PossiblyNullOperand occurrences="1">
7747+
<code>$params['Seq_in_index']</code>
7748+
</PossiblyNullOperand>
77607749
<PossiblyNullPropertyAssignmentValue occurrences="3">
77617750
<code>null</code>
77627751
<code>null</code>
@@ -9274,12 +9263,8 @@
92749263
<code>$trigger['event_manipulation']</code>
92759264
<code>$trigger['name']</code>
92769265
</MixedArgument>
9277-
<MixedArrayAccess occurrences="10">
9266+
<MixedArrayAccess occurrences="6">
92789267
<code>$comments[$field_name]</code>
9279-
<code>$key['Column_name']</code>
9280-
<code>$key['Column_name']</code>
9281-
<code>$key['Non_unique']</code>
9282-
<code>$key['Non_unique']</code>
92839268
<code>$mime_map[$field_name]</code>
92849269
<code>$trigger['action_timing']</code>
92859270
<code>$trigger['definition']</code>
@@ -9292,7 +9277,7 @@
92929277
<code>$comments[$field_name]</code>
92939278
<code>$mime_map[$field_name]</code>
92949279
</MixedArrayOffset>
9295-
<MixedAssignment occurrences="14">
9280+
<MixedAssignment occurrences="10">
92969281
<code>$GLOBALS['what']</code>
92979282
<code>$col_alias</code>
92989283
<code>$col_as</code>
@@ -9301,11 +9286,7 @@
93019286
<code>$col_as</code>
93029287
<code>$col_as</code>
93039288
<code>$field_name</code>
9304-
<code>$key</code>
9305-
<code>$key</code>
93069289
<code>$trigger</code>
9307-
<code>$unique_keys[]</code>
9308-
<code>$unique_keys[]</code>
93099290
<code>$value</code>
93109291
</MixedAssignment>
93119292
<MixedOperand occurrences="1">
@@ -9353,23 +9334,19 @@
93539334
<code>$mime_map[$field_name]['mimetype']</code>
93549335
<code>$row['Type']</code>
93559336
</MixedArgument>
9356-
<MixedArrayAccess occurrences="3">
9357-
<code>$key['Column_name']</code>
9358-
<code>$key['Non_unique']</code>
9337+
<MixedArrayAccess occurrences="1">
93599338
<code>$mime_map[$field_name]['mimetype']</code>
93609339
</MixedArrayAccess>
93619340
<MixedArrayOffset occurrences="1">
93629341
<code>$aliases[$db]['tables'][$table]['columns'][$col_as]</code>
93639342
</MixedArrayOffset>
9364-
<MixedAssignment occurrences="8">
9343+
<MixedAssignment occurrences="6">
93659344
<code>$col_as</code>
93669345
<code>$col_as</code>
93679346
<code>$col_as</code>
93689347
<code>$columns_alias[$i]</code>
93699348
<code>$field_name</code>
9370-
<code>$key</code>
93719349
<code>$type</code>
9372-
<code>$unique_keys[]</code>
93739350
</MixedAssignment>
93749351
<MixedOperand occurrences="4">
93759352
<code>$col_as</code>
@@ -9806,12 +9783,8 @@
98069783
<code>$type</code>
98079784
<code>$value</code>
98089785
</MixedArgument>
9809-
<MixedArrayAccess occurrences="10">
9786+
<MixedArrayAccess occurrences="6">
98109787
<code>$comments[$field_name]</code>
9811-
<code>$key['Column_name']</code>
9812-
<code>$key['Column_name']</code>
9813-
<code>$key['Non_unique']</code>
9814-
<code>$key['Non_unique']</code>
98159788
<code>$mime_map[$field_name]</code>
98169789
<code>$trigger['action_timing']</code>
98179790
<code>$trigger['definition']</code>
@@ -9824,7 +9797,7 @@
98249797
<code>$comments[$field_name]</code>
98259798
<code>$mime_map[$field_name]</code>
98269799
</MixedArrayOffset>
9827-
<MixedAssignment occurrences="15">
9800+
<MixedAssignment occurrences="11">
98289801
<code>$GLOBALS['what']</code>
98299802
<code>$col_alias</code>
98309803
<code>$col_as</code>
@@ -9833,12 +9806,8 @@
98339806
<code>$col_as</code>
98349807
<code>$col_as</code>
98359808
<code>$field_name</code>
9836-
<code>$key</code>
9837-
<code>$key</code>
98389809
<code>$trigger</code>
98399810
<code>$type</code>
9840-
<code>$unique_keys[]</code>
9841-
<code>$unique_keys[]</code>
98429811
<code>$value</code>
98439812
</MixedAssignment>
98449813
<MixedOperand occurrences="5">

0 commit comments

Comments
 (0)