NEWSESSION operator
The NEWSESSION operator creates an action that executes the other action in a new session.
Syntax
NEWSESSION [NEWSQL] [nestedBlock] action
where nestedBlock has one of two possible syntaxes:
NESTED LOCAL
NESTED (propertyId1, ..., propertyIdN)
Description
The NEWSESSION operator creates an action which executes the other action in a new session.
If the NESTED keyword is specified, the changes of the local properties will be visible in the new session. If the LOCAL keyword is specified, changes of all the local properties will be visible, otherwise, a list of the local properties whose changes need to be visible in the new session should be specified. Also, changes to these local properties in the new session will get to the current session when applying changes in this new session.
Parameters
-
NEWSQLIf this keyword is specified, a new SQL connection will be created. In this case, the block containing the
NESTEDkeyword will be ignored. -
LOCALIf this keyword is specified, changes to all the local properties will be visible in the new session.
-
propertyId1, ..., propertyIdNA list of local properties whose changes will be visible in the new session. Each list element must be a property ID.
-
actionA context-dependent action operator that defines an action to be executed in the new session.
Examples
testNewSession () {
NEWSESSION {
NEW c = Currency {
name(c) <- 'USD';
code(c) <- 866;
}
APPLY;
}
// here a new object of class Currency is already in the database
LOCAL local = BPSTRING[10] (Currency);
local(Currency c) <- 'Local';
NEWSESSION {
MESSAGE (GROUP SUM 1 IF local(Currency c) == 'Local'); // will return NULL
}
NEWSESSION NESTED (local) {
// will return the number of objects of class Currency
MESSAGE (GROUP SUM 1 IF local(Currency c) == 'Local');
}
NEWSESSION {
NEW s = Sku {
id(s) <- 1234;
name(s) <- 'New Sku';
SHOW sku OBJECTS s = s;
}
}
}