class SchemaStatement extends DefinitionStatement {

    protected final Schema schema;

    /**
     * Create a new statement.
     *
     * @param session the session
     * @param schema the schema
     */
    public SchemaStatement(ServerSession session, Schema schema) {
        super(session);
        this.schema = schema;
        session.getUser().checkSystemSchema(session, schema);
    }

    /**
     * Get the schema
     *
     * @return the schema
     */
    protected Schema getSchema() {
        return schema;
    }

    protected DbObjectLock tryAlterTable(Table table) {<FILL_FUNCTION_BODY>}
}

        // 先用schema级别的排它锁来避免其他事务也来执行Alter Table操作
        DbObjectLock lock = schema.tryExclusiveLock(DbObjectType.TABLE_OR_VIEW, session);
        if (lock == null)
            return null;
        // 再用table级别的共享锁来避免其他事务进行Drop Table操作，但是不阻止DML操作
        if (!table.trySharedLock(session))
            return null;

        return lock;
    
<methods>public boolean isDDL() <variables>