@@ -48,6 +48,17 @@ public enum CharacterSetSyntax {
4848 private CharacterSetSyntax characterSetSyntax = CharacterSetSyntax .CHARACTER_SET ;
4949 private IntervalQualifier intervalQualifier ;
5050 private List <Integer > arrayData = new ArrayList <Integer >();
51+ private boolean usingArrayKeyword ;
52+
53+ /** ARRAY or ARRAY[n] spelling; arrayData still contains the single dimension. */
54+ public boolean isUsingArrayKeyword () {
55+ return usingArrayKeyword ;
56+ }
57+
58+ public void setUsingArrayKeyword (boolean usingArrayKeyword ) {
59+ this .usingArrayKeyword = usingArrayKeyword ;
60+ }
61+
5162 private Signedness signedness ;
5263 private boolean zerofill ;
5364 private BigInteger precision ;
@@ -365,7 +376,13 @@ public void setScale(Integer scale) {
365376 @ Override
366377 public String toString () {
367378 StringBuilder arraySpec = new StringBuilder ();
379+ if (usingArrayKeyword && !arrayData .isEmpty ()) {
380+ arraySpec .append (" ARRAY" );
381+ }
368382 for (Integer item : arrayData ) {
383+ if (usingArrayKeyword && item == null ) {
384+ continue ;
385+ }
369386 arraySpec .append ("[" );
370387 if (item != null ) {
371388 arraySpec .append (item );
@@ -498,6 +515,7 @@ public final boolean equals(Object o) {
498515 && characterSetSyntax == that .characterSetSyntax
499516 && Objects .equals (intervalQualifier , that .intervalQualifier )
500517 && Objects .equals (arrayData , that .arrayData )
518+ && usingArrayKeyword == that .usingArrayKeyword
501519 && signedness == that .signedness
502520 && zerofill == that .zerofill
503521 && Objects .equals (typeModifiers , that .typeModifiers )
@@ -516,6 +534,7 @@ public int hashCode() {
516534 result = 31 * result + Objects .hashCode (characterSetSyntax );
517535 result = 31 * result + Objects .hashCode (intervalQualifier );
518536 result = 31 * result + Objects .hashCode (arrayData );
537+ result = 31 * result + Boolean .hashCode (usingArrayKeyword );
519538 result = 31 * result + Objects .hashCode (signedness );
520539 result = 31 * result + Boolean .hashCode (zerofill );
521540 result = 31 * result + Objects .hashCode (typeModifiers );
0 commit comments