public function getFieldSQL($xmldb_table, $xmldb_field, $skip_type_clause = NULL, $skip_default_clause = NULL, $skip_notnull_clause = NULL, $specify_nulls_clause = NULL, $specify_field_name = true)  {
        if ($error = $xmldb_field->validateDefinition($xmldb_table)) {
            throw new coding_exception($error);
        }

        $skip_type_clause = is_null($skip_type_clause) ? $this->alter_column_skip_type : $skip_type_clause;
        $skip_default_clause = is_null($skip_default_clause) ? $this->alter_column_skip_default : $skip_default_clause;
        $skip_notnull_clause = is_null($skip_notnull_clause) ? $this->alter_column_skip_notnull : $skip_notnull_clause;
        $specify_nulls_clause = is_null($specify_nulls_clause) ? $this->specify_nulls : $specify_nulls_clause;

        // First of all, convert integers to numbers if defined
        if ($this->integer_to_number) {
            if ($xmldb_field->getType() == XMLDB_TYPE_INTEGER) {
                $xmldb_field->setType(XMLDB_TYPE_NUMBER);
            }
        }
        // Same for floats
        if ($this->float_to_number) {
            if ($xmldb_field->getType() == XMLDB_TYPE_FLOAT) {
                $xmldb_field->setType(XMLDB_TYPE_NUMBER);
            }
        }

        $field = ''; // Let's accumulate the whole expression based on params and settings
        // The name
        if ($specify_field_name) {
            $field .= $this->getEncQuoted($xmldb_field->getName());
        }
        // The type and length only if we don't want to skip it
        if (!$skip_type_clause) {
            // The type and length
            $field .= ' ' . $this->getTypeSQL($xmldb_field->getType(), $xmldb_field->getLength(), $xmldb_field->getDecimals());
        }
        // note: unsigned is not supported any more since moodle 2.3, all numbers are signed
        // Calculate the not null clause
        $notnull = '';
        // Only if we don't want to skip it
        if (!$skip_notnull_clause) {
            if ($xmldb_field->getNotNull()) {
                $notnull = ' NOT NULL';
            } else {
                if ($specify_nulls_clause) {
                    $notnull = ' NULL';
                }
            }
        }
        // Calculate the default clause
        $default_clause = '';
        if (!$skip_default_clause) { //Only if we don't want to skip it
            $default_clause = $this->getDefaultClause($xmldb_field);
        }
        // Based on default_after_null, set both clauses properly
        if ($this->default_after_null) {
            $field .= $notnull . $default_clause;
        } else {
            $field .= $default_clause . $notnull;
        }
        // The sequence
        if ($xmldb_field->getSequence()) {
            if($xmldb_field->getLength()<=9 && $this->sequence_name_small) {
                $sequencename=$this->sequence_name_small;
            } else {
                $sequencename=$this->sequence_name;
            }
            $field .= ' ' . $sequencename;
            if ($this->sequence_only) {
                // We only want the field name and sequence name to be printed
                // so, calculate it and return
                $sql = $this->getEncQuoted($xmldb_field->getName()) . ' ' . $sequencename;
                return $sql;
            }
        }
        return $field;
    }
public function getFieldSQL($xmldb_table, $xmldb_field, $skip_type_clause = NULL, $skip_default_clause = NULL, $skip_notnull_clause = NULL, $specify_nulls_clause = NULL, $specify_field_name = true)  {
        if ($error = $xmldb_field->validateDefinition($xmldb_table)) {
            throw new coding_exception($error);
        }

        $skip_type_clause = is_null($skip_type_clause) ? $this->alter_column_skip_type : $skip_type_clause;
        $skip_default_clause = is_null($skip_default_clause) ? $this->alter_column_skip_default : $skip_default_clause;
        $skip_notnull_clause = is_null($skip_notnull_clause) ? $this->alter_column_skip_notnull : $skip_notnull_clause;
        $specify_nulls_clause = is_null($specify_nulls_clause) ? $this->specify_nulls : $specify_nulls_clause;

        // First of all, convert integers to numbers if defined
        if ($this->integer_to_number) {
            if ($xmldb_field->getType() == XMLDB_TYPE_INTEGER) {
                $xmldb_field->setType(XMLDB_TYPE_NUMBER);
            }
        }
        // Same for floats
        if ($this->float_to_number) {
            if ($xmldb_field->getType() == XMLDB_TYPE_FLOAT) {
                $xmldb_field->setType(XMLDB_TYPE_NUMBER);
            }
        }

        $field = ''; // Let's accumulate the whole expression based on params and settings
        // The name
        if ($specify_field_name) {
            $field .= $this->getEncQuoted($xmldb_field->getName());
        }
        // The type and length only if we don't want to skip it
        if (!$skip_type_clause) {
            // The type and length
            $field .= ' ' . $this->getTypeSQL($xmldb_field->getType(), $xmldb_field->getLength(), $xmldb_field->getDecimals());
        }
        // note: unsigned is not supported any more since moodle 2.3, all numbers are signed
        // Calculate the not null clause
        $notnull = '';
        // Only if we don't want to skip it
        if (!$skip_notnull_clause) {
            if ($xmldb_field->getNotNull()) {
                $notnull = ' NOT NULL';
            } else {
                if ($specify_nulls_clause) {
                    $notnull = ' NULL';
                }
            }
        }
        // Calculate the default clause
        $default_clause = '';
        if (!$skip_default_clause) { //Only if we don't want to skip it
            $default_clause = $this->getDefaultClause($xmldb_field);
        }
        // Based on default_after_null, set both clauses properly
        if ($this->default_after_null) {
            $field .= $notnull . $default_clause;
        } else {
            $field .= $default_clause . $notnull;
        }
        // The sequence
        if ($xmldb_field->getSequence()) {
            if($xmldb_field->getLength()<=9 && $this->sequence_name_small) {
                $sequencename=$this->sequence_name_small;
            } else {
                $sequencename=$this->sequence_name;
            }
            $field .= ' ' . $sequencename;
            if ($this->sequence_only) {
                // We only want the field name and sequence name to be printed
                // so, calculate it and return
                $sql = $this->getEncQuoted($xmldb_field->getName()) . ' ' . $sequencename;
                return $sql;
            }
        }
        return $field;
    }
public function getFieldSQL ( $ xmldb_table , $ xmldb_field , $ skip_type_clause = NULL , $ skip_default_clause = NULL , $ skip_notnull_clause = NULL , $ specify_nulls_clause = NULL , $ specify_field_name = true ) { if ( $ error = $ xmldb_field -> validateDefinition ( $ xmldb_table ) ) { throw new coding_exception ( $ error ) ; } $ skip_type_clause = is_null ( $ skip_type_clause ) ? $ this -> alter_column_skip_type : $ skip_type_clause ; $ skip_default_clause = is_null ( $ skip_default_clause ) ? $ this -> alter_column_skip_default : $ skip_default_clause ; $ skip_notnull_clause = is_null ( $ skip_notnull_clause ) ? $ this -> alter_column_skip_notnull : $ skip_notnull_clause ; $ specify_nulls_clause = is_null ( $ specify_nulls_clause ) ? $ this -> specify_nulls : $ specify_nulls_clause ; // First of all, convert integers to numbers if defined if ( $ this -> integer_to_number ) { if ( $ xmldb_field -> getType ( ) == XMLDB_TYPE_INTEGER ) { $ xmldb_field -> setType ( XMLDB_TYPE_NUMBER ) ; } } // Same for floats if ( $ this -> float_to_number ) { if ( $ xmldb_field -> getType ( ) == XMLDB_TYPE_FLOAT ) { $ xmldb_field -> setType ( XMLDB_TYPE_NUMBER ) ; } } $ field = '' ; // Let's accumulate the whole expression based on params and settings // The name if ( $ specify_field_name ) { $ field .= $ this -> getEncQuoted ( $ xmldb_field -> getName ( ) ) ; } // The type and length only if we don't want to skip it if ( ! $ skip_type_clause ) { // The type and length $ field .= ' ' . $ this -> getTypeSQL ( $ xmldb_field -> getType ( ) , $ xmldb_field -> getLength ( ) , $ xmldb_field -> getDecimals ( ) ) ; } // note: unsigned is not supported any more since moodle 2.3, all numbers are signed // Calculate the not null clause $ notnull = '' ; // Only if we don't want to skip it if ( ! $ skip_notnull_clause ) { if ( $ xmldb_field -> getNotNull ( ) ) { $ notnull = ' NOT NULL' ; } else { if ( $ specify_nulls_clause ) { $ notnull = ' NULL' ; } } } // Calculate the default clause $ default_clause = '' ; if ( ! $ skip_default_clause ) { //Only if we don't want to skip it $ default_clause = $ this -> getDefaultClause ( $ xmldb_field ) ; } // Based on default_after_null, set both clauses properly if ( $ this -> default_after_null ) { $ field .= $ notnull . $ default_clause ; } else { $ field .= $ default_clause . $ notnull ; } // The sequence if ( $ xmldb_field -> getSequence ( ) ) { if ( $ xmldb_field -> getLength ( ) <= 9 && $ this -> sequence_name_small ) { $ sequencename = $ this -> sequence_name_small ; } else { $ sequencename = $ this -> sequence_name ; } $ field .= ' ' . $ sequencename ; if ( $ this -> sequence_only ) { // We only want the field name and sequence name to be printed // so, calculate it and return $ sql = $ this -> getEncQuoted ( $ xmldb_field -> getName ( ) ) . ' ' . $ sequencename ; return $ sql ; } } return $ field ; }
Given one correct xmldb_field, returns the complete SQL line to create it.

@param xmldb_table $xmldb_table The table related to $xmldb_field.
@param xmldb_field $xmldb_field The instance of xmldb_field to create the SQL from.
@param string $skip_type_clause The type clause on alter columns, NULL by default.
@param string $skip_default_clause The default clause on alter columns, NULL by default.
@param string $skip_notnull_clause The null/notnull clause on alter columns, NULL by default.
@param string $specify_nulls_clause To force a specific null clause, NULL by default.
@param bool $specify_field_name Flag to specify fieldname in return.
@return string The field generating SQL statement.
@throws coding_exception Thrown when xmldb_field doesn't validate with the xmldb_table.
Given one correct xmldb_field returns the complete SQL line to create it .