Comment : Charset=windows-1252
Comment : test cases for using virtual relvars in assignment constraints

Comment : attributes and relvar design
Request : cmd(assert attribute,attribute(tuple(attributename(scalar1)typename(long))tuple(attributename(scalar2)typename(long))tuple(attributename(scalar3)typename(long))))cmd(assert relvar,relvar(tuple(relvarname(vrtasc1)relvarpredicate(record with scalar1 and scalar2 and scalar3.))))cmd(assert relvarattribute,relvarattribute(tuple(relvarname(vrtasc1)attributename(scalar1))tuple(relvarname(vrtasc1)attributename(scalar2))tuple(relvarname(vrtasc1)attributename(scalar3))))
Reply   : 

Comment : persistence resources
Request : cmd(assert storagespace,storagespace(tuple(filename(vrtasc1a.spdb)extentscount(2)pagecount(2)storagespaceid(1))tuple(filename(vrtasc1a.spdb)extentscount(2)pagecount(2)storagespaceid(2))))cmd(assert dataspace,dataspace(tuple(filename(vrtasc1a.spdb)storagespaceid(1)gapcompressionthreshold(5)maximumgaps(9))))cmd(assert dbmsfile,dbmsfile(tuple(filename(vrtasc1a.spdb)pagesize(8192)))))cmd(assert hashingindexspace,hashingindexspace(tuple(filename(vrtasc1a.spdb)storagespaceid(2))))
Reply   : 

Comment : physical relvar design
Request : cmd(assert recordtype,recordtype(tuple(filename(vrtasc1a.spdb)storagespaceid(1)indexname(l_r_vrtasc1)recordtypename(r_vrtasc1)relvarname(vrtasc1))))cmd(assert index,index(tuple(filename(vrtasc1a.spdb)storagespaceid(2)recordtypename(r_vrtasc1)relvarname(vrtasc1)indexname(l_r_vrtasc1))))cmd(assert recordattribute,recordattribute(tuple(recordtypename(r_vrtasc1)relvarname(vrtasc1)attributename(scalar1)ordinal(10))tuple(recordtypename(r_vrtasc1)relvarname(vrtasc1)attributename(scalar2)ordinal(20))tuple(recordtypename(r_vrtasc1)relvarname(vrtasc1)attributename(scalar3)ordinal(30))))cmd(assert indexcomponent,indexcomponent(tuple(relvarname(vrtasc1)indexname(l_r_vrtasc1)ordinal(10)sp_expression(scalar1))))
Reply   : 

Comment : test cases for using virtual relvars in assignment constraints

Comment : clear the relvar 
Request : delete vrtasc1,vrtasc1
Reply   : 
Request : commit
Reply   : 

Comment : viewexpression : update if it exists, assert if it doesn't
Request : update virtualrelvar,restrict(virtualrelvar,eq(relvarname,name(v_vrtasc1))),(sp_expression(STRING(RELATION\(HEADING\(\)BODY\(\)\))))
Reply   : 
Request : assert virtualrelvar,virtualrelvar(tuple(relvarname(v_vrtasc1)sp_expression(STRING(RELATION\(HEADING\(\)BODY\(\)\)))))
Reply   : 

Comment : set a database constraint involving V_VRTASC
Request : cmd(assert assignmentconstraint,assignmentconstraint(tuple(errorcode(184006)constraintlabel(test with view) sp_expression(join\(restrict\(inserts\(VRTASC1\),GT\(SCALAR1,SCALAR2\)\),v_vrtasc1\) ))))cmd(assert assignmentconstraintcheck,assignmentconstraintcheck(tuple(errorcode(184006)relvarname(vrtasc1)operationtype(2))))
Reply   : 

Comment : populate the relvar - should pass because the view evaluates to TABLE_DUM
Request : assert vrtasc1,vrtasc1(tuple(scalar1(1)scalar2(0)scalar3(0)))
Reply   : 
Request : commit
Reply   : 

Comment : change view expression - should succeed because there's no check on existing data
Request : update virtualrelvar,virtualrelvar(tuple(relvarname(v_vrtasc1)sp_expression(STRING(RELATION\(HEADING\(\)BODY\(\)\))))),(sp_expression(STRING(RELATION\(HEADING\(\)BODY\(TUPLE\(\)\)\))))
Reply   : 

Comment : populate the relvar - should fail because of the new assignment constraint
Request : assert vrtasc1,vrtasc1(tuple(scalar1(2)scalar2(1)scalar3(0)))
Reply   : 201806116:184006:The violating tuple's meaning is 'Record with 2 and 1 and 0.and it holds that 'GT(SCALAR1,SCALAR2)' AND '.
Request : commit
Reply   : 

Comment : now test mith multiple levels of nested views - assert second view (update if it exists - create if it doesn't)
Request : update virtualrelvar,restrict(virtualrelvar,eq(relvarname,name(v_vrtasc2))),(sp_expression(STRING(TABLE_DEE)))
Reply   : 
Request : assert virtualrelvar,virtualrelvar(tuple(relvarname(v_vrtasc2)sp_expression(STRING(TABLE_DEE))))
Reply   : 

Comment : change V1 expression to reference V2
Request : update virtualrelvar,virtualrelvar(tuple(relvarname(v_vrtasc1)sp_expression(STRING(RELATION\(HEADING\(\)BODY\(TUPLE\(\)\)\))))),(sp_expression(STRING(v_vrtasc2)))
Reply   : 

Comment : populate the relvar - should fail because of the new assignment constraint is still TABLE_DEE
Request : assert vrtasc1,vrtasc1(tuple(scalar1(2)scalar2(1)scalar3(0)))
Reply   : 201806116:184006:The violating tuple's meaning is 'Record with 2 and 1 and 0.and it holds that 'GT(SCALAR1,SCALAR2)' AND '.
Request : commit
Reply   : 

Comment : change V2 to TABLE_DUM
Request : update virtualrelvar,virtualrelvar(tuple(relvarname(v_vrtasc2)sp_expression(STRING(TABLE_DEE)))),(sp_expression(STRING(TABLE_DUM)))
Reply   : 

Comment : populate the relvar - should now succeed
Request : assert vrtasc1,vrtasc1(tuple(scalar1(2)scalar2(1)scalar3(0)))
Reply   : 
Request : commit
Reply   : 

Comment : clean up the view - should fail because the assignment constraint still references it - this should not cause a server crash
Request : delete virtualrelvar,restrict(virtualrelvar,eq(relvarname,name(v_vrtasc2)))
Reply   : 201806116:139:A relvar reference to v_vrtasc2 made by relvar v_vrtasc1 is invalid because v_vrtasc2 is not a known relvar

Comment : clean up the view - should fail because the assignment constraint still references it - this should not cause a server crash
Request : delete virtualrelvar,restrict(virtualrelvar,eq(relvarname,name(v_vrtasc1)))
Reply   : 201806116:140:The violating tuple's meaning is 'Assignment constraint 184006 involves a reference to relvar v_vrtasc1 that is not through a TRANSACTION() invocation.,and it is not the case that : (v_vrtasc1 is a Relation variable whose predicate is "RELVARPREDICATE".) OR (v_vrtasc1 is the name of a virtual relvar that represents the current value of the expression SP_EXPRESSION)'.

Comment : clean up the assignment constraint
Request : cmd(delete assignmentconstraint,restrict(assignmentconstraint,eq(errorcode,long(184006))))cmd(delete assignmentconstraintcheck,restrict(assignmentconstraintcheck,eq(errorcode,long(184006))))
Reply   : 

Comment : clean up the view
Request : delete virtualrelvar,restrict(virtualrelvar,eq(relvarname,name(v_vrtasc1)))
Reply   : 
Request : delete virtualrelvar,restrict(virtualrelvar,eq(relvarname,name(v_vrtasc2)))
Reply   : 

Comment : clear the relvar 
Request : delete vrtasc1,vrtasc1
Reply   : 

Comment : clean up test cases for using virtual relvars in assignment constraints

Comment : the relvar data
Request : delete vrtasc1,vrtasc1
Reply   : 
Request : commit
Reply   : 

Comment : physical relvar design
Request : cmd(unassert recordtype,recordtype(tuple(filename(vrtasc1a.spdb)storagespaceid(1)indexname(l_r_vrtasc1)recordtypename(r_vrtasc1)relvarname(vrtasc1))))cmd(unassert index,index(tuple(filename(vrtasc1a.spdb)storagespaceid(2)recordtypename(r_vrtasc1)relvarname(vrtasc1)indexname(l_r_vrtasc1))))cmd(unassert recordattribute,recordattribute(tuple(recordtypename(r_vrtasc1)relvarname(vrtasc1)attributename(scalar1)ordinal(10))tuple(recordtypename(r_vrtasc1)relvarname(vrtasc1)attributename(scalar2)ordinal(20))tuple(recordtypename(r_vrtasc1)relvarname(vrtasc1)attributename(scalar3)ordinal(30))))cmd(unassert indexcomponent,indexcomponent(tuple(relvarname(vrtasc1)indexname(l_r_vrtasc1)ordinal(10)sp_expression(scalar1))))
Reply   : 

Comment : persistence resources
Request : cmd(unassert storagespace,storagespace(tuple(filename(vrtasc1a.spdb)extentscount(2)pagecount(2)storagespaceid(1))tuple(filename(vrtasc1a.spdb)extentscount(2)pagecount(2)storagespaceid(2))))cmd(unassert dataspace,dataspace(tuple(filename(vrtasc1a.spdb)storagespaceid(1)gapcompressionthreshold(5)maximumgaps(9))))cmd(unassert dbmsfile,dbmsfile(tuple(filename(vrtasc1a.spdb)pagesize(8192)))))cmd(unassert hashingindexspace,hashingindexspace(tuple(filename(vrtasc1a.spdb)storagespaceid(2))))
Reply   : 

Comment : attributes and relvar design
Request : cmd(unassert attribute,semiminus(attribute(tuple(attributename(scalar1)typename(long))tuple(attributename(scalar2)typename(long))tuple(attributename(scalar3)typename(long))),relvarattribute))cmd(unassert relvar,relvar(tuple(relvarname(vrtasc1)relvarpredicate(record with scalar1 and scalar2 and scalar3.))))cmd(unassert relvarattribute,relvarattribute(tuple(relvarname(vrtasc1)attributename(scalar1))tuple(relvarname(vrtasc1)attributename(scalar2))tuple(relvarname(vrtasc1)attributename(scalar3))))
Reply   : 

Comment : viewexpression
Request : unassert virtualrelvar,restrict(virtualrelvar,eq(relvarname,name(v_vrtasc1)))
Reply   : 
END
