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

Commit 84029037 authored by Jonas Schwertfeger's avatar Jonas Schwertfeger
Browse files

Added buildQuery and buildUnionSubQuery methods without misleading selectionArgs parameter.

The signatures of the existing buildQuery and buildUnionSubQuery methods include a selectionArgs
parameter that is not actually being used in the method implementations.  This parameter leads
to the misconception that SQL paramter substitution is carried out by these methods.  I added
new variants of these methods without that parameter and deprecated the old variants.

Change-Id: I1bf770d5c777649e9aac36d93aa93bd65bbcc2a3
parent db65907a
Loading
Loading
Loading
Loading
+51 −1
Original line number Diff line number Diff line
@@ -55246,6 +55246,29 @@
</parameter>
<parameter name="selection" type="java.lang.String">
</parameter>
<parameter name="groupBy" type="java.lang.String">
</parameter>
<parameter name="having" type="java.lang.String">
</parameter>
<parameter name="sortOrder" type="java.lang.String">
</parameter>
<parameter name="limit" type="java.lang.String">
</parameter>
</method>
<method name="buildQuery"
 return="java.lang.String"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="deprecated"
 visibility="public"
>
<parameter name="projectionIn" type="java.lang.String[]">
</parameter>
<parameter name="selection" type="java.lang.String">
</parameter>
<parameter name="selectionArgs" type="java.lang.String[]">
</parameter>
<parameter name="groupBy" type="java.lang.String">
@@ -55323,6 +55346,33 @@
</parameter>
<parameter name="selection" type="java.lang.String">
</parameter>
<parameter name="groupBy" type="java.lang.String">
</parameter>
<parameter name="having" type="java.lang.String">
</parameter>
</method>
<method name="buildUnionSubQuery"
 return="java.lang.String"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="deprecated"
 visibility="public"
>
<parameter name="typeDiscriminatorColumn" type="java.lang.String">
</parameter>
<parameter name="unionColumns" type="java.lang.String[]">
</parameter>
<parameter name="columnsPresentInTable" type="java.util.Set&lt;java.lang.String&gt;">
</parameter>
<parameter name="computedColumnsOffset" type="int">
</parameter>
<parameter name="typeDiscriminatorValue" type="java.lang.String">
</parameter>
<parameter name="selection" type="java.lang.String">
</parameter>
<parameter name="selectionArgs" type="java.lang.String[]">
</parameter>
<parameter name="groupBy" type="java.lang.String">
@@ -216168,7 +216218,7 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="t" type="T">
<parameter name="arg0" type="T">
</parameter>
</method>
</interface>
+41 −13
Original line number Diff line number Diff line
@@ -321,7 +321,7 @@ public class SQLiteQueryBuilder
        }

        String sql = buildQuery(
                projectionIn, selection, selectionArgs, groupBy, having,
                projectionIn, selection, groupBy, having,
                sortOrder, limit);

        if (Log.isLoggable(TAG, Log.DEBUG)) {
@@ -345,10 +345,6 @@ public class SQLiteQueryBuilder
     *   formatted as an SQL WHERE clause (excluding the WHERE
     *   itself).  Passing null will return all rows for the given
     *   URL.
     * @param selectionArgs You may include ?s in selection, which
     *   will be replaced by the values from selectionArgs, in order
     *   that they appear in the selection.  The values will be bound
     *   as Strings.
     * @param groupBy A filter declaring how to group rows, formatted
     *   as an SQL GROUP BY clause (excluding the GROUP BY itself).
     *   Passing null will cause the rows to not be grouped.
@@ -365,8 +361,8 @@ public class SQLiteQueryBuilder
     * @return the resulting SQL SELECT statement
     */
    public String buildQuery(
            String[] projectionIn, String selection, String[] selectionArgs,
            String groupBy, String having, String sortOrder, String limit) {
            String[] projectionIn, String selection, String groupBy,
            String having, String sortOrder, String limit) {
        String[] projection = computeProjection(projectionIn);

        StringBuilder where = new StringBuilder();
@@ -393,6 +389,19 @@ public class SQLiteQueryBuilder
                groupBy, having, sortOrder, limit);
    }

    /**
     * @deprecated This method's signature is misleading since no SQL parameter
     * substitution is carried out.  The selection arguments parameter does not get
     * used at all.  To avoid confusion, call
     * {@link #buildQuery(String[], String, String, String, String, String)} instead.
     */
    @Deprecated
    public String buildQuery(
            String[] projectionIn, String selection, String[] selectionArgs,
            String groupBy, String having, String sortOrder, String limit) {
        return buildQuery(projectionIn, selection, groupBy, having, sortOrder, limit);
    }

    /**
     * Construct a SELECT statement suitable for use in a group of
     * SELECT statements that will be joined through UNION operators
@@ -422,10 +431,6 @@ public class SQLiteQueryBuilder
     *   formatted as an SQL WHERE clause (excluding the WHERE
     *   itself).  Passing null will return all rows for the given
     *   URL.
     * @param selectionArgs You may include ?s in selection, which
     *   will be replaced by the values from selectionArgs, in order
     *   that they appear in the selection.  The values will be bound
     *   as Strings.
     * @param groupBy A filter declaring how to group rows, formatted
     *   as an SQL GROUP BY clause (excluding the GROUP BY itself).
     *   Passing null will cause the rows to not be grouped.
@@ -443,7 +448,6 @@ public class SQLiteQueryBuilder
            int computedColumnsOffset,
            String typeDiscriminatorValue,
            String selection,
            String[] selectionArgs,
            String groupBy,
            String having) {
        int unionColumnsCount = unionColumns.length;
@@ -463,11 +467,35 @@ public class SQLiteQueryBuilder
            }
        }
        return buildQuery(
                projectionIn, selection, selectionArgs, groupBy, having,
                projectionIn, selection, groupBy, having,
                null /* sortOrder */,
                null /* limit */);
    }

    /**
     * @deprecated This method's signature is misleading since no SQL parameter
     * substitution is carried out.  The selection arguments parameter does not get
     * used at all.  To avoid confusion, call
     * {@link #buildUnionSubQuery(String, String[], Set<String>, int, String, String, String, String)}
     * instead.
     */
    @Deprecated
    public String buildUnionSubQuery(
            String typeDiscriminatorColumn,
            String[] unionColumns,
            Set<String> columnsPresentInTable,
            int computedColumnsOffset,
            String typeDiscriminatorValue,
            String selection,
            String[] selectionArgs,
            String groupBy,
            String having) {
        return buildUnionSubQuery(
                typeDiscriminatorColumn, unionColumns, columnsPresentInTable,
                computedColumnsOffset, typeDiscriminatorValue, selection,
                groupBy, having);
    }

    /**
     * Given a set of subqueries, all of which are SELECT statements,
     * construct a query that returns the union of what those