code: function  updateTemplate(tbName, schema, columns, inData)  {
  	var  insertObj = {},
  		 jsonObj = {},
  		 schemaCol = schema.columns,
  		 isNewSQL = schemaCol.indexOf('_c_json') >= 0;
  
  	// if columns are specified in the SQL expression, remove input data which are
  	// not  specified in columns
  	if (columns)  {
  		var  ndata = {},
  			 keys = Object.getOwnPropertyNames(inData);
  		for (var i in keys)  {
  			var  key = keys[i];
  			if (columns.indexOf(key) >= 0)
  				ndata[key] = inData[key];
  		}
  		inData = ndata;
  	}
  	
  	// needs to decide what goes to sql columns and what goes to the json column
  	var  keys = Object.getOwnPropertyNames(inData);
  	for (var i in keys)  {
  		var  key = keys[i];
  		if (schemaCol.indexOf(key) >= 0)
  			insertObj[key] = inData[key];
  		else  if (isNewSQL)
  			jsonObj[key] = inData[key];
  	}
  
  	var  insertCol = Object.keys( insertObj );
  	if (Object.keys(jsonObj).length)  {
  		// prepare the json column
  		insertCol.push('_c_json');
  		//insertObj._c_json = JSON.stringify(jsonObj);
  	}
  
  	var  updateSBI = soar.sqlTemplate(tbName);
  	updateSBI.column( insertCol );
  
  	return  {sbi: updateSBI, data: insertObj, _c_json: jsonObj};
  }
docs: /*
  create an update template and split the input data into sql and not-sql columns.