@@ -312,8 +312,30 @@ function makeTableView(
312312 const sequences = table . sequences . map ( seq => {
313313 const col = rowType . value . elements [ seq . column ] ;
314314 const colType = col . algebraicType ;
315+ let sequenceTrigger : any ;
316+ switch ( colType . tag ) {
317+ case 'U8' :
318+ case 'I8' :
319+ case 'U16' :
320+ case 'I16' :
321+ case 'U32' :
322+ case 'I32' :
323+ sequenceTrigger = 0 ;
324+ break ;
325+ case 'U64' :
326+ case 'I64' :
327+ case 'U128' :
328+ case 'I128' :
329+ case 'U256' :
330+ case 'I256' :
331+ sequenceTrigger = 0n ;
332+ break ;
333+ default :
334+ throw new TypeError ( 'invalid sequence type' ) ;
335+ }
315336 return {
316337 colName : col . name ! ,
338+ sequenceTrigger,
317339 read : ( reader : BinaryReader ) =>
318340 AlgebraicType . deserializeValue ( reader , colType , typespace ) ,
319341 } ;
@@ -323,11 +345,13 @@ function makeTableView(
323345 const iter = ( ) =>
324346 new TableIterator ( sys . datastore_table_scan_bsatn ( table_id ) , rowType ) ;
325347
326- const integrate_generated_columns = hasAutoIncrement
348+ const integrateGeneratedColumns = hasAutoIncrement
327349 ? ( row : RowType < any > , ret_buf : Uint8Array ) => {
328350 const reader = new BinaryReader ( ret_buf ) ;
329- for ( const { colName, read } of sequences ) {
330- row [ colName ] = read ( reader ) ;
351+ for ( const { colName, read, sequenceTrigger } of sequences ) {
352+ if ( row [ colName ] === sequenceTrigger ) {
353+ row [ colName ] = read ( reader ) ;
354+ }
331355 }
332356 }
333357 : null ;
@@ -341,7 +365,7 @@ function makeTableView(
341365 AlgebraicType . serializeValue ( writer , rowType , row , typespace ) ;
342366 const ret_buf = sys . datastore_insert_bsatn ( table_id , writer . getBuffer ( ) ) ;
343367 const ret = { ...row } ;
344- integrate_generated_columns ?.( ret , ret_buf ) ;
368+ integrateGeneratedColumns ?.( ret , ret_buf ) ;
345369
346370 return ret ;
347371 } ,
@@ -465,7 +489,7 @@ function makeTableView(
465489 index_id ,
466490 writer . getBuffer ( )
467491 ) ;
468- integrate_generated_columns ?.( row , ret_buf ) ;
492+ integrateGeneratedColumns ?.( row , ret_buf ) ;
469493 return row ;
470494 } ,
471495 } as UniqueIndex < any , any > ;
0 commit comments