Problemas com SQLite?

Estou tentando usar o banco de dados SQLite porém não consigo instanciar o cursor de forma correta estou recebendo o seguinte erro:

“E/CursorWindow: Failed to read row 0, column -1 from a CursorWindow which has 1 rows, 5 columns.”

vou deixar o código do meu banco de dados abaixo se alguém puder me ajudar agradecerei muito.

public class memoria extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "produtos.db";
    private static final int DATABASE_VERSION = 1;
    private static final String TABLE_NAME = "produtos";
    private static final String NAME = "nome";
    private static final String CODE = "codigo";
    private static final String QUANTITY = "quantidade";
    private static final String PRICE_BUY = "precoCompra";
    private static final String PRICE_SELL = "precoVenda";
    private static final String[] COLUNA = {NAME, CODE, PRICE_BUY, PRICE_SELL, QUANTITY};
    public memoria(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_TABLE =  "CREATE TABLE produtos (id INTEGER PRIMARY KEY AUTOINCREMENT,"+
                "nome TEXT,"+
                "codigo INTEGER,"+
                "precoCompra REAL,"+
                "precoVenda REAL,"+
                "quantidade INTEGER);";
        db.execSQL(CREATE_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {
        db.execSQL("DROP TABLE IF EXISTS produtos");
        this.onCreate(db);
    }

    public int addProduto(produto PRODUTO){
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();

        values.put(NAME, PRODUTO.getNome());
        values.put(CODE, PRODUTO.getCodigo());
        values.put(PRICE_BUY, PRODUTO.getPrecoCompra());
        values.put(PRICE_SELL, PRODUTO.getPrecoVenda());
        values.put(QUANTITY, PRODUTO.getQuantidade());

        db.insert(TABLE_NAME, null, values);
        db.close();
        return PRODUTO.getCodigo();
    }

    private produto cursorToProduct(Cursor cursor){
        produto PRODUTO = new produto(cursor.getString(cursor.getColumnIndex(NAME)),
                Integer.parseInt(cursor.getString(cursor.getColumnIndex(CODE))),
                Float.parseFloat(cursor.getString(cursor.getColumnIndex(PRICE_BUY))),
                Float.parseFloat(cursor.getString(cursor.getColumnIndex(PRICE_SELL))),
                Integer.parseInt(cursor.getString(cursor.getColumnIndex(QUANTITY))));
        PRODUTO.setId(Integer.parseInt(cursor.getString(cursor.getColumnIndex("id"))));

        return PRODUTO;
    }

    public produto getProduto(String nome){
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.query(TABLE_NAME,COLUNA,"nome = ?", new String[] {nome},
                null, null, null, null);
        if(cursor == null){
            return null;
        }else{
            cursor.moveToFirst();
            produto PRODUTO = cursorToProduct(cursor);
            return PRODUTO;
        }
    }
}