Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f6f2273c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Carry over bugfixes from MediaProvider." into rvc-dev

parents 47091008 0fd3e397
Loading
Loading
Loading
Loading
+52 −0
Original line number Diff line number Diff line
@@ -191,6 +191,58 @@ public class DatabaseUtils {
        }
    }

    /** {@hide} */
    public static long executeInsert(@NonNull SQLiteDatabase db, @NonNull String sql,
            @Nullable Object[] bindArgs) throws SQLException {
        try (SQLiteStatement st = db.compileStatement(sql)) {
            bindArgs(st, bindArgs);
            return st.executeInsert();
        }
    }

    /** {@hide} */
    public static int executeUpdateDelete(@NonNull SQLiteDatabase db, @NonNull String sql,
            @Nullable Object[] bindArgs) throws SQLException {
        try (SQLiteStatement st = db.compileStatement(sql)) {
            bindArgs(st, bindArgs);
            return st.executeUpdateDelete();
        }
    }

    /** {@hide} */
    private static void bindArgs(@NonNull SQLiteStatement st, @Nullable Object[] bindArgs) {
        if (bindArgs == null) return;

        for (int i = 0; i < bindArgs.length; i++) {
            final Object bindArg = bindArgs[i];
            switch (getTypeOfObject(bindArg)) {
                case Cursor.FIELD_TYPE_NULL:
                    st.bindNull(i + 1);
                    break;
                case Cursor.FIELD_TYPE_INTEGER:
                    st.bindLong(i + 1, ((Number) bindArg).longValue());
                    break;
                case Cursor.FIELD_TYPE_FLOAT:
                    st.bindDouble(i + 1, ((Number) bindArg).doubleValue());
                    break;
                case Cursor.FIELD_TYPE_BLOB:
                    st.bindBlob(i + 1, (byte[]) bindArg);
                    break;
                case Cursor.FIELD_TYPE_STRING:
                default:
                    if (bindArg instanceof Boolean) {
                        // Provide compatibility with legacy
                        // applications which may pass Boolean values in
                        // bind args.
                        st.bindLong(i + 1, ((Boolean) bindArg).booleanValue() ? 1 : 0);
                    } else {
                        st.bindString(i + 1, bindArg.toString());
                    }
                    break;
            }
        }
    }

    /**
     * Binds the given Object to the given SQLiteProgram using the proper
     * typing. For example, bind numbers as longs/doubles, and everything else
+3 −3
Original line number Diff line number Diff line
@@ -626,7 +626,7 @@ public class SQLiteQueryBuilder {
                Log.d(TAG, sql);
            }
        }
        return db.executeSql(sql, sqlArgs);
        return DatabaseUtils.executeInsert(db, sql, sqlArgs);
    }

    /**
@@ -702,7 +702,7 @@ public class SQLiteQueryBuilder {
                Log.d(TAG, sql);
            }
        }
        return db.executeSql(sql, sqlArgs);
        return DatabaseUtils.executeUpdateDelete(db, sql, sqlArgs);
    }

    /**
@@ -762,7 +762,7 @@ public class SQLiteQueryBuilder {
                Log.d(TAG, sql);
            }
        }
        return db.executeSql(sql, sqlArgs);
        return DatabaseUtils.executeUpdateDelete(db, sql, sqlArgs);
    }

    private void enforceStrictColumns(@Nullable String[] projection) {