public static function render(Query\Insert $query)
    {
        return Compiler::withDb($query->getDb(), function () use ($query) {

            $table = $query->getTable();
            $select = $query->getSelect();

            return Compiler::expression(array(
                'INSERT',
                $query->getType(),
                Compiler::word('INTO', $table !== null ? Aliased::render($table) : null),
                Columns::render($query->getColumns()),
                Compiler::word('VALUES', Values::combine($query->getValues())),
                Compiler::word('SET', Set::combine($query->getSet())),
                $select !== null ? Select::render($select) : null,
            ));
        });
    }