The java.sql.PreparedStatement.executeUpdate() return contract states the following:
either (1) the row count for SQL Data Manipulation Language (DML) statements or (2) 0 for SQL statements that return nothing".
Phoenix deletion statements that delete 1000 or more records return an incorrect value from executeUpdate().
Execute this table create statement:
DROP TABLE IF EXISTS TEST_TABLE;
CREATE TABLE IF NOT EXISTS TEST_TABLE (
pk1 DECIMAL NOT NULL,
CONSTRAINT PK PRIMARY KEY
Then see and execute the attached Java class to see repro.