/**
  * INTERNAL: Appends an Oracle specific Timestamp, if usesNativeSQL is true otherwise use the ODBC
  * format. Native Format: to_timestamp ('1997-11-06 10:35:45.656' , 'yyyy-mm-dd hh:mm:ss.ff')
  */
 protected void appendTimestamp(java.sql.Timestamp timestamp, Writer writer) throws IOException {
   if (usesNativeSQL()) {
     writer.write("to_timestamp('");
     writer.write(Helper.printTimestamp(timestamp));
     writer.write("','yyyy-mm-dd HH24:MI:SS.FF')");
   } else {
     super.appendTimestamp(timestamp, writer);
   }
 }
 /**
  * INTERNAL: Appends an Oracle specific Timestamp, if usesNativeSQL is true otherwise use the ODBC
  * format. Native Format: to_timestamp_tz ('1997-11-06 10:35:45.345 America/Los_Angeles' ,
  * 'yyyy-mm-dd hh:mm:ss.ff TZR')
  */
 protected void appendCalendar(Calendar calendar, Writer writer) throws IOException {
   if (usesNativeSQL()) {
     writer.write("to_timestamp_tz('");
     writer.write(TIMESTAMPHelper.printCalendar(calendar));
     writer.write("','yyyy-mm-dd HH24:MI:SS.FF TZR')");
   } else {
     super.appendCalendar(calendar, writer);
   }
 }
 /** INTERNAL: Allow the use of XMLType operators on this platform. */
 protected void initializePlatformOperators() {
   super.initializePlatformOperators();
   addOperator(ExpressionOperator.extract());
   addOperator(ExpressionOperator.extractValue());
   addOperator(ExpressionOperator.existsNode());
   addOperator(ExpressionOperator.isFragment());
   addOperator(ExpressionOperator.getStringVal());
   addOperator(ExpressionOperator.getNumberVal());
   addOperator(SpatialExpressionOperators.withinDistance());
   addOperator(SpatialExpressionOperators.relate());
   addOperator(SpatialExpressionOperators.filter());
   addOperator(SpatialExpressionOperators.nearestNeighbor());
 }
 /**
  * INTERNAL: Note that index (not index+1) is used in statement.setObject(index, parameter)
  * Binding starts with a 1 not 0, so make sure that index > 0. Treat Calendar separately. Bind
  * Calendar as TIMESTAMPTZ.
  */
 public void setParameterValueInDatabaseCall(
     Object parameter, PreparedStatement statement, int index, AbstractSession session)
     throws SQLException {
   if (parameter instanceof Calendar) {
     Calendar calendar = (Calendar) parameter;
     Connection conn = getConnection(session, statement.getConnection());
     TIMESTAMPTZ tsTZ =
         TIMESTAMPHelper.buildTIMESTAMPTZ(
             calendar, conn, getPrintCalendarIntoTimestampTZ(), getCorrectTimeInTimestampTZ());
     statement.setObject(index, tsTZ);
   } else {
     super.setParameterValueInDatabaseCall(parameter, statement, index, session);
   }
 }