code: private ColumnTypeDescriptor getColumnTypeDescriptor(ColumnDataType columnDataType, Map<String, ColumnTypeDescriptor> columnTypes, Store store) {
          String databaseSpecificTypeName = columnDataType.getDatabaseSpecificTypeName();
          ColumnTypeDescriptor columnTypeDescriptor = columnTypes.get(databaseSpecificTypeName);
          if (columnTypeDescriptor == null) {
              columnTypeDescriptor = store.find(ColumnTypeDescriptor.class, databaseSpecificTypeName);
              if (columnTypeDescriptor == null) {
                  columnTypeDescriptor = store.create(ColumnTypeDescriptor.class);
                  columnTypeDescriptor.setDatabaseType(databaseSpecificTypeName);
                  columnTypeDescriptor.setAutoIncrementable(columnDataType.isAutoIncrementable());
                  columnTypeDescriptor.setCaseSensitive(columnDataType.isCaseSensitive());
                  columnTypeDescriptor.setPrecision(columnDataType.getPrecision());
                  columnTypeDescriptor.setMinimumScale(columnDataType.getMinimumScale());
                  columnTypeDescriptor.setMaximumScale(columnDataType.getMaximumScale());
                  columnTypeDescriptor.setFixedPrecisionScale(columnDataType.isFixedPrecisionScale());
                  columnTypeDescriptor.setNumericPrecisionRadix(columnDataType.getNumPrecisionRadix());
                  columnTypeDescriptor.setUnsigned(columnDataType.isUnsigned());
                  columnTypeDescriptor.setUserDefined(columnDataType.isUserDefined());
                  columnTypeDescriptor.setNullable(columnDataType.isNullable());
              }
              columnTypes.put(databaseSpecificTypeName, columnTypeDescriptor);
          }
          return columnTypeDescriptor;
      }
docs: Return the column type descriptor for the given data type.
  
  @param columnDataType The data type.
  @param columnTypes    The cached data types.
  @param store          The store.
  @return The column type descriptor.