Jump to: navigation, search

EDT:EGL Language Primitive Types

Please see the parent of this page, EDT:EGL Language.

Primitive Types (Table 3)

Primitive Types Value or Reference? Core JavaScript
Nullable Types
Java
Any reference
done
1.5d
done
Boolean value
done
done
done
String(N) reference  done bug 366892
 done bug 366893
 done Limited string support
String reference8 done done
done

Date1

EDT:EGL Language Primitive Type Date

value

done
 done
done

Date support

Timestamp(pattern)1

EDT:EGL Language Primitive Type Timestamp

value
done
 0.5

done

Timestamp with pattern support

Timestamp1,6

EDT:EGL Language Primitive Type Timestamp

reference8 done  0.5d

done

Timestamp without pattern support

Blob reference
done
N/S
1d

Blob support

Clob reference
done
N/S
1d

Clob support

Smallint value
done
done
done
Int value
done
done
done
Bigint value
done
done
done
Decimal(N,M)7 value
done
done
done
Decimal2 reference
done 
done
done
Float value
done
done
done
Smallfloat value
done
done
done
Number3 reference
done bug 354146
done

1d

Generic number support

Bytes(N)4 value
done
0.5d
0.5d

Bytes with length support

Bytes5 reference done
0.5d
0.5d

Bytes without length support

Time1

 done

done

Time support

done

Time support

Char


done
N/S N/S
Dbchar


done
N/S N/S
Mbchar

done
N/S N/S
Unicode


done
N/S N/S
Hex4


done
N/S N/S
Interval1


1d
N/S N/S
Bin


done
N/S N/S
Num


done
N/S N/S
Numc


done
N/S N/S
Pacf


done
N/S N/S
Money


done
N/S N/S

Notes on Table 3

  1. Date and timestamp are the only supported date/time types. Use a timestamp in place of RBD's time.  You might be able to use a numeric type in place of RBD's interval.
  2. Decimal with no length or decimals is a reference type with an immutable value.
  3. Number is a reference type with an immutable value. Unlike in RBD, number variables can be declared anywhere a variable declaration is allowed.
  4. Bytes(N) is a value type similar to RBD's hex. N indicates the number of bytes in the value. (In RBD, the length of a hex is the number of nibbles not the nubmer of bytes.)
  5. Bytes with no length is a reference type with an immutable value of any length.
  6. Timestamp with no pattern is a reference type in EDT.  It can hold any timestamp value.
  7. As in RBD, it's OK to only specify the length when using the decimal type. Decimal(N) is internally mapped to decimal(N,0).
  8. These will be value types in 0.7 but they'll change to references in 1.0.

More about the Bytes type

Bytes is meant to hold data with no particular format.

Assignment between two bytes values with no length is a reference assignment. Assignment between two bytes values when one or both has a length is a value assignment (data is copied). If the source is longer bytes on its right side are truncated. If the source is shorter then we don't add padding: we just don't update what was there before. For example if your bytes(3) is 0x123456 and you assign it a bytes(1) value of 0x99 then the bytes(3) ends up with 0x993456.

In order for two bytes values to be compared, they must both have a size, and the sizes must be equal. The comparison is done one bit at a time, from left to right, until a difference is found. The operand with a one instead of a zero is greater.

The bytes type supports the substring operator. The type of the result is bytes (with no length).