@@ -83,6 +83,33 @@ suite('StatementSync.prototype.all()', () => {
8383 { __proto__ : null , key : 'key2' , val : 'val2' } ,
8484 ] ) ;
8585 } ) ;
86+
87+ test ( 'reflects an added column on first use after the schema changes' , ( t ) => {
88+ const db = new DatabaseSync ( nextDb ( ) ) ;
89+ t . after ( ( ) => { db . close ( ) ; } ) ;
90+ db . exec ( 'CREATE TABLE storage(key TEXT, val TEXT)' ) ;
91+ db . prepare ( 'INSERT INTO storage (key, val) VALUES (?, ?)' ) . run ( 'key1' , 'val1' ) ;
92+
93+ const stmt = db . prepare ( 'SELECT * FROM storage ORDER BY key' ) ;
94+ db . exec ( "ALTER TABLE storage ADD COLUMN extra TEXT DEFAULT 'def'" ) ;
95+ t . assert . deepStrictEqual ( stmt . all ( ) , [
96+ { __proto__ : null , key : 'key1' , val : 'val1' , extra : 'def' } ,
97+ ] ) ;
98+ } ) ;
99+
100+ test ( 'reflects a dropped column on first use after the schema changes' , ( t ) => {
101+ const db = new DatabaseSync ( nextDb ( ) ) ;
102+ t . after ( ( ) => { db . close ( ) ; } ) ;
103+ db . exec ( 'CREATE TABLE storage(key TEXT, val TEXT, extra TEXT)' ) ;
104+ db . prepare ( 'INSERT INTO storage (key, val, extra) VALUES (?, ?, ?)' )
105+ . run ( 'key1' , 'val1' , 'x' ) ;
106+
107+ const stmt = db . prepare ( 'SELECT * FROM storage ORDER BY key' ) ;
108+ db . exec ( 'ALTER TABLE storage DROP COLUMN extra' ) ;
109+ t . assert . deepStrictEqual ( stmt . all ( ) , [
110+ { __proto__ : null , key : 'key1' , val : 'val1' } ,
111+ ] ) ;
112+ } ) ;
86113} ) ;
87114
88115suite ( 'StatementSync.prototype.iterate()' , ( ) => {
0 commit comments