core/src/main/java/com/orientechnologies/orient/core/sql/OCommandExecutorSQLCreateProperty.java
public Object execute(final Map<Object, Object> iArgs) {
    if (type == null)
      throw new OCommandExecutionException("Cannot execute the command because it has not been parsed yet");

    final ODatabaseDocument database = getDatabase();
    final OClassEmbedded sourceClass = (OClassEmbedded) database.getMetadata().getSchema().getClass(className);
    if (sourceClass == null)
      throw new OCommandExecutionException("Source class '" + className + "' not found");

    OPropertyImpl prop = (OPropertyImpl) sourceClass.getProperty(fieldName);

    if (prop != null) {
      if (ifNotExists) {
        return sourceClass.properties().size();
      }
      throw new OCommandExecutionException(
          "Property '" + className + "." + fieldName + "' already exists. Remove it before to retry.");
    }

    // CREATE THE PROPERTY
    OClass linkedClass = null;
    OType linkedType = null;
    if (linked != null) {
      // FIRST SEARCH BETWEEN CLASSES
      linkedClass = database.getMetadata().getSchema().getClass(linked);

      if (linkedClass == null)
        // NOT FOUND: SEARCH BETWEEN TYPES
        linkedType = OType.valueOf(linked.toUpperCase(Locale.ENGLISH));
    }

    // CREATE IT LOCALLY
    OPropertyImpl internalProp = sourceClass.addPropertyInternal(fieldName, type, linkedType, linkedClass, unsafe);
    if (readonly) {
      internalProp.setReadonly(true);
    }

    if (mandatory) {
      internalProp.setMandatory(true);
    }

    if (notnull) {
      internalProp.setNotNull(true);
    }

    if (max != null) {
      internalProp.setMax(max);
    }

    if (min != null) {
      internalProp.setMin(min);
    }

    if (defaultValue != null) {
      internalProp.setDefaultValue(defaultValue);
    }

    return sourceClass.properties().size();
  }
public Object execute(final Map<Object, Object> iArgs) {
    if (type == null)
      throw new OCommandExecutionException("Cannot execute the command because it has not been parsed yet");

    final ODatabaseDocument database = getDatabase();
    final OClassEmbedded sourceClass = (OClassEmbedded) database.getMetadata().getSchema().getClass(className);
    if (sourceClass == null)
      throw new OCommandExecutionException("Source class '" + className + "' not found");

    OPropertyImpl prop = (OPropertyImpl) sourceClass.getProperty(fieldName);

    if (prop != null) {
      if (ifNotExists) {
        return sourceClass.properties().size();
      }
      throw new OCommandExecutionException(
          "Property '" + className + "." + fieldName + "' already exists. Remove it before to retry.");
    }

    // CREATE THE PROPERTY
    OClass linkedClass = null;
    OType linkedType = null;
    if (linked != null) {
      // FIRST SEARCH BETWEEN CLASSES
      linkedClass = database.getMetadata().getSchema().getClass(linked);

      if (linkedClass == null)
        // NOT FOUND: SEARCH BETWEEN TYPES
        linkedType = OType.valueOf(linked.toUpperCase(Locale.ENGLISH));
    }

    // CREATE IT LOCALLY
    OPropertyImpl internalProp = sourceClass.addPropertyInternal(fieldName, type, linkedType, linkedClass, unsafe);
    if (readonly) {
      internalProp.setReadonly(true);
    }

    if (mandatory) {
      internalProp.setMandatory(true);
    }

    if (notnull) {
      internalProp.setNotNull(true);
    }

    if (max != null) {
      internalProp.setMax(max);
    }

    if (min != null) {
      internalProp.setMin(min);
    }

    if (defaultValue != null) {
      internalProp.setDefaultValue(defaultValue);
    }

    return sourceClass.properties().size();
  }
Execute the CREATE PROPERTY.