File tree Expand file tree Collapse file tree 2 files changed +38
-1
lines changed Expand file tree Collapse file tree 2 files changed +38
-1
lines changed Original file line number Diff line number Diff line change @@ -25,7 +25,7 @@ public class SchemaReader {
2525 . map { ( row: Row ) -> ColumnDefinition in
2626 ColumnDefinition (
2727 name: row [ TableInfoTable . nameColumn] ,
28- primaryKey: row [ TableInfoTable . primaryKeyColumn] == 1 ?
28+ primaryKey: ( row [ TableInfoTable . primaryKeyColumn] ?? 0 ) > 0 ?
2929 try parsePrimaryKey ( column: row [ TableInfoTable . nameColumn] ) : nil ,
3030 type: ColumnDefinition . Affinity ( row [ TableInfoTable . typeColumn] ) ,
3131 nullable: row [ TableInfoTable . notNullColumn] == 0 ,
Original file line number Diff line number Diff line change @@ -90,6 +90,43 @@ class SchemaReaderTests: SQLiteTestCase {
9090 )
9191 }
9292
93+ func test_columnDefinitions_composite_primary_keys( ) throws {
94+ try db. run ( """
95+ CREATE TABLE t (
96+ col1 INTEGER,
97+ col2 INTEGER,
98+ col3 INTEGER,
99+ PRIMARY KEY (col1, col2)
100+ );
101+ """ )
102+
103+ XCTAssertEqual (
104+ try schemaReader. columnDefinitions ( table: " t " ) , [
105+ ColumnDefinition (
106+ name: " col1 " ,
107+ primaryKey: . init( autoIncrement: false ) ,
108+ type: . INTEGER,
109+ nullable: true ,
110+ defaultValue: . NULL,
111+ references: nil ) ,
112+ ColumnDefinition (
113+ name: " col2 " ,
114+ primaryKey: . init( autoIncrement: false ) ,
115+ type: . INTEGER,
116+ nullable: true ,
117+ defaultValue: . NULL,
118+ references: nil ) ,
119+ ColumnDefinition (
120+ name: " col3 " ,
121+ primaryKey: nil ,
122+ type: . INTEGER,
123+ nullable: true ,
124+ defaultValue: . NULL,
125+ references: nil )
126+ ]
127+ )
128+ }
129+
93130 func test_indexDefinitions_no_index( ) throws {
94131 let indexes = try schemaReader. indexDefinitions ( table: " users " )
95132 XCTAssertTrue ( indexes. isEmpty)
You can’t perform that action at this time.
0 commit comments