Store fails for the result of a window operation


#1

Please what is wrong with this sequence of queries (based on the simple “window” example in the user guide):

create array m4x4 <val:double>[i=0:3,4,0,j=0:3,4,0] create array m4x4_result <val:double>[i=0:3,4,0,j=0:3,4,0] store(build(m4x4,i*4+j),m4x4) window(m4x4,0,2,0,2,min(val))

All of the above work as expected. However the following fails as shown:

store(window(m4x4,0,2,0,2,min(val)),m4x4_result) UserException in file: src/query/ops/store/LogicalStore.cpp function: inferSchema line: 216 Error id: scidb::SCIDB_SE_INFER_SCHEMA::SCIDB_LE_ARRAYS_NOT_CONFORMANT Error description: Error during schema inferring. Arrays are not conformant.

Thanks.


#2

It looks like window operator creates an array where the attribute has some extra modifiers:

show('window(m4x4,0,2,0,2,min(val))','afl')
{i} schema
{0} 'm4x4@1<val_min:double NULL DEFAULT null> [i=0:3,4,0,j=0:3,4,0]'

Try matching the schema of the result array to the one above. The actual name of the attribute may not matter here.


#3

Ah thanks. I didn’t expect “window” to generate a nullable output attribute from a non-nullable input attribute. I suppose I could do something like

store(build(<subVal:double>[i=0:0,1,0],0),zeros) store(substitute(window(….),zeros,..),..)

Any chance this might be fixed or is there a design reason for this default behavior?