@@ -469,7 +469,7 @@ extension StmtTypeChecker {
469469 // to say this stays for now but I dont like it.
470470 inNewEnvironment ( extendCurrentEnv: true ) { typeChecker in
471471 for column in resultColumns. allColumns where !typeChecker. env. hasColumn ( named: column. key) {
472- typeChecker. env. import ( column: column. key, with: column. value)
472+ typeChecker. env. import ( column: column. key, with: column. value. type )
473473 }
474474
475475 for term in select. orderBy {
@@ -524,7 +524,7 @@ extension StmtTypeChecker {
524524 let type = inferenceState. solution ( for: type)
525525 inferenceState. unify (
526526 type,
527- with: inferenceState. solution ( for: secondColumns [ index] ) ,
527+ with: inferenceState. solution ( for: secondColumns [ index] . type ) ,
528528 at: location
529529 )
530530 index += 1
@@ -555,7 +555,7 @@ extension StmtTypeChecker {
555555 continue
556556 }
557557
558- columnTypes. append ( def)
558+ columnTypes. append ( def. type )
559559 }
560560 inputType = . row( . fixed( columnTypes) )
561561 } else {
@@ -604,7 +604,7 @@ extension StmtTypeChecker {
604604 return . empty
605605 }
606606
607- inferenceState. unify ( column, with: valueType, at: set. location)
607+ inferenceState. unify ( column. type , with: valueType, at: set. location)
608608 // SET (column1, column2) = (value1, value2)
609609 case let . list( columnNames) :
610610 // TODO: Names will not be inferred here. Names only handles
@@ -664,7 +664,7 @@ extension StmtTypeChecker {
664664
665665 for name in names {
666666 if let column = table. columns [ name. value] . first {
667- columns. append ( column)
667+ columns. append ( column. type )
668668 } else {
669669 diagnostics. add ( . columnDoesNotExist( name) )
670670 columns. append ( . error)
@@ -687,7 +687,7 @@ extension StmtTypeChecker {
687687
688688 let name = alias? . identifier. value ?? names. proposedName ?? " column \( offset + 1 ) "
689689
690- resultColumns. append ( type, for: name)
690+ resultColumns. append ( Column ( type: type ) , for: name)
691691 case . all:
692692 resultColumns. append ( contentsOf: sourceTable. columns)
693693 }
@@ -726,7 +726,8 @@ extension StmtTypeChecker {
726726 recursiveCte = Table (
727727 name: cteName,
728728 columns: cte. columns. reduce ( into: [ : ] ) { columns, name in
729- columns. append ( inferenceState. freshTyVar ( for: name) , for: name. value)
729+ let type = inferenceState. freshTyVar ( for: name)
730+ columns. append ( Column ( type: type) , for: name. value)
730731 } ,
731732 kind: . cte
732733 )
@@ -888,7 +889,7 @@ extension StmtTypeChecker {
888889 let ( type, names) = typeCheck ( expr)
889890 let name = alias? . identifier. value ?? names. proposedName ?? " column \( offset + 1 ) "
890891
891- columns. append ( type, for: name)
892+ columns. append ( Column ( type: type ) , for: name)
892893 nameInferrer. suggest ( name: name, for: names)
893894
894895 // We selected a single column, so clear out the table
@@ -1085,7 +1086,9 @@ extension StmtTypeChecker {
10851086 tableColumns: columns,
10861087 tableName: createTable. name. value
10871088 )
1088- columns. append ( type, for: name. value)
1089+ let isGenerated = def. constraints. contains { $0. isGenerated }
1090+ let column = Column ( type: type, isGenerated: isGenerated)
1091+ columns. append ( column, for: name. value)
10891092 }
10901093
10911094 validateTableConstraints (
@@ -1148,7 +1151,9 @@ extension StmtTypeChecker {
11481151 tableColumns: table. columns,
11491152 tableName: table. name. name
11501153 )
1151- table. columns. append ( newType, for: column. name. value)
1154+ let isGenerated = column. constraints. contains { $0. isGenerated }
1155+ let newColumn = Column ( type: newType, isGenerated: isGenerated)
1156+ table. columns. append ( newColumn, for: column. name. value)
11521157 case let . dropColumn( column) :
11531158 table. columns = Columns ( table. columns. filter { $0. key != column. value } )
11541159 }
@@ -1389,7 +1394,7 @@ extension StmtTypeChecker {
13891394 ? . nominal( typeName)
13901395 : . optional( . nominal( typeName) )
13911396
1392- columns. append ( type, for: name. value)
1397+ columns. append ( Column ( type: type ) , for: name. value)
13931398 case . fts5Option:
13941399 break // Nothing to do, maybe validate these in the future
13951400 case . unknown:
0 commit comments