docs: protected DataType parseExactNumericType( DdlTokenStream tokens ) throws ParsingException {
          DataType dataType = null;
          String typeName = null;
  
          if (tokens.matchesAnyOf("INTEGER", "INT", "SMALLINT")) {
              dataType = new DataType();
              typeName = consume(tokens, dataType, false);
              dataType.setName(typeName);
          } else if (tokens.matchesAnyOf("NUMERIC", "DECIMAL", "DEC")) {
              dataType = new DataType();
              typeName = consume(tokens, dataType, false);
              dataType.setName(typeName);
  
              int precision = 0;
              int scale = 0;
  
              if (tokens.matches(L_PAREN)) {
                  consume(tokens, dataType, false, L_PAREN);
                  precision = (int)parseLong(tokens, dataType);
                  if (canConsume(tokens, dataType, false, COMMA)) {
                      scale = (int)parseLong(tokens, dataType);
                  } else {
                      scale = getDefaultScale();
                  }
                  consume(tokens, dataType, false, R_PAREN);
              } else {
                  precision = getDefaultPrecision();
                  scale = getDefaultScale();
              }
              dataType.setPrecision(precision);
              dataType.setScale(scale);
          }
  
          return dataType;
      }