@@ -411,11 +411,58 @@ var _inputFns = new Map([
411411 _$o ( { affectedRows : _r } , options )
412412 _db . commit ( )
413413 } else {
414- var _r = _db . q ( r )
415- if ( isMap ( _r ) && isArray ( _r . results ) ) {
416- _$o ( _r . results , options )
417- } else {
418- _exit ( - 1 , "Invalid DB result: " + stringify ( _r ) )
414+ if ( toBoolean ( params . indbstream ) ) {
415+ var _rs = _db . qsRS ( r )
416+ try {
417+ while ( _rs . next ( ) ) {
418+ var _r = { }
419+ for ( var i = 1 ; i <= _rs . getMetaData ( ) . getColumnCount ( ) ; i ++ ) {
420+ var _v = _rs . getObject ( i )
421+ switch ( _rs . getMetaData ( ) . getColumnType ( i ) ) {
422+ case java . sql . Types . BIGINT :
423+ case java . sql . Types . INTEGER :
424+ case java . sql . Types . TINYINT :
425+ case java . sql . Types . SMALLINT :
426+ case java . sql . Types . NUMERIC :
427+ _v = Number ( _v )
428+ break
429+ case java . sql . Types . DOUBLE :
430+ case java . sql . Types . FLOAT :
431+ case java . sql . Types . REAL :
432+ case java . sql . Types . DECIMAL :
433+ _v = Number ( _v )
434+ break
435+ case java . sql . Types . BOOLEAN :
436+ _v = Boolean ( _v )
437+ break
438+ case java . sql . Types . TIME :
439+ case java . sql . Types . DATE :
440+ case java . sql . Types . TIMESTAMP :
441+ _v = new Date ( _v . getTime ( ) )
442+ break
443+ case java . sql . Types . NULL :
444+ _v = null
445+ break
446+ default :
447+ _v = String ( _v )
448+ }
449+ _r [ _rs . getMetaData ( ) . getColumnName ( i ) ] = _v
450+ }
451+ _$o ( _r , options )
452+ }
453+ } catch ( e ) {
454+ _exit ( - 1 , "Error streaming SQL: " + e . message )
455+ } finally {
456+ _db . closeStatement ( r )
457+ _rs . close ( )
458+ }
459+ } else {
460+ var _r = _db . q ( r )
461+ if ( isMap ( _r ) && isArray ( _r . results ) ) {
462+ _$o ( _r . results , options )
463+ } else {
464+ _exit ( - 1 , "Invalid DB result: " + stringify ( _r ) )
465+ }
419466 }
420467 }
421468 } catch ( edb ) {
0 commit comments