选择截断的结果,不显示错误消息

时间:2014-08-23 09:03:27

标签: google-cloud-sql

我正在通过Java和JDBC从App Engine应用程序中使用Google Cloud SQL。 我使用以下代码选择表的行:

public void processGcmRegistrations(String whereCondition, String appName, 
                                    String[] appVariants, boolean onlyTestDevices,
                                    String orderByCondition, 
                                    GcmRegistrationProcessor processor) throws DbException {

    if (whereCondition == null && appName == null)
        throw new IllegalArgumentException("One of the parameters \"whereCondition\", " + 
                                           "\"appNmae\" must not be null.");

    if (whereCondition == null) {
        whereCondition = "APP_NAME = '" + appName + "' " + 
                         createInListCondition("APP_VARIANT", appVariants);

        if (onlyTestDevices)
            whereCondition += " AND TEST_DEVICE = 1 ";
    }

    String orderByConditionStr = "";
    if (orderByCondition != null)
        orderByConditionStr = " ORDER BY " + orderByCondition;

    String selectStmt = "SELECT GCM_ID, GCM_REGISTRATION_TIME, APP_NAME, APP_VARIANT, " +
                        "INSTALLATION_ID, DEVICE, LAST_UPDATE " +
                        "FROM GcmRegistration WHERE " + whereCondition + orderByConditionStr;

    log.info("GcmIds Select: " + selectStmt);

    ResultSet rs = null;
    try {
        long start = System.currentTimeMillis();
        rs = dbConnection.createStatement().executeQuery(selectStmt);
        log.info("Select duration: " + ((System.currentTimeMillis()-start)/1000) + " secs.");

        int count = 0;
        while (rs.next()) {
            GcmRegistration reg = new GcmRegistration();

            reg.gcmId               = rs.getString(1);
            reg.gcmRegistrationTime = rs.getLong(2);
            reg.appName             = rs.getString(3);
            reg.appVariant          = rs.getString(4);
            reg.installationId      = rs.getString(5);
            reg.device              = rs.getString(6);
            reg.lastUpdate          = rs.getLong(7);

            processor.processGcmRegistration(reg);
            count++;
        }
        log.info(count + " GcmRegistrations processed.");


    } catch (Exception e) {
        String errorMsg = "Selecting GCM_IDs from table GcmRegistration failed.";
        log.log(Level.SEVERE, errorMsg, e);
        throw new DbException(errorMsg, e);
    } finally {
        if (rs != null)
            rs.close();
    }
}

我总是使用相同的参数执行此方法,并且通常会接收大约152000行。

在极少数情况下(我估计从50开始)我只收到大约62000行,没有任何异常! rs.next()返回false,但并非所有结果行都已传递。

谷歌:上次发生的时间是2014年8月22日23:20(MEST)

0 个答案:

没有答案