Skip to content

PostgreSQL: expect "USING INDEX is not supported ..." in ADD_TABLE_CONSTRAINT_USING_INDEX - #1371

Merged
mrigger merged 1 commit into
sqlancer:mainfrom
alexanderlaw:main-2
Oct 21, 2026
Merged

mrigger merged 1 commit into
sqlancer:mainfrom
alexanderlaw:main-2

Conversation

@alexanderlaw

Copy link
Copy Markdown
Contributor

SQLancer fails on a postgres error triggered by:

CREATE TABLE t0(c0 INT) PARTITION BY RANGE (c0);
CREATE UNIQUE INDEX i0 ON t0(c0);
ALTER TABLE ONLY t0 ADD CONSTRAINT t PRIMARY KEY USING INDEX i0;
--java.lang.AssertionError: ALTER TABLE  ONLY t0 OWNER TO CURRENT_USER, CLUSTER ON i0, ALTER c0  RESET(n_distinct), ADD CONSTRAINT t PRIMARY KEY USING INDEX i0;
--    at sqlancer.common.query.SQLQueryAdapter.checkException(SQLQueryAdapter.java:124)
--    at sqlancer.common.query.SQLQueryAdapter.execute(SQLQueryAdapter.java:106)
--    at sqlancer.Main$QueryManager.execute(Main.java:355)
--    at sqlancer.GlobalState.executeStatement(GlobalState.java:108)
--    at sqlancer.StatementExecutor.executeStatements(StatementExecutor.java:70)
--    at sqlancer.postgres.PostgresProvider.prepareTables(PostgresProvider.java:352)
--    at sqlancer.postgres.PostgresProvider.generateDatabase(PostgresProvider.java:197)
--    at sqlancer.postgres.PostgresProvider.generateDatabase(PostgresProvider.java:1)
--    at sqlancer.ProviderAdapter.generateAndTestDatabase(ProviderAdapter.java:52)
--    at sqlancer.Main$DBMSExecutor.run(Main.java:454)
--    at sqlancer.Main$2.run(Main.java:668)
--    at sqlancer.Main$2.runThread(Main.java:650)
--    at sqlancer.Main$2.run(Main.java:641)
--    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
--    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
--    at java.base/java.lang.Thread.run(Thread.java:840)
--Caused by: org.postgresql.util.PSQLException: ERROR: ALTER TABLE / ADD CONSTRAINT USING INDEX is not supported on partitioned tables
--    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2676)
--    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2366)
--    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:356)
--    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:496)
--    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:413)
--    at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:333)
--    at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:319)
--    at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:295)
--    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:290)
--    at sqlancer.common.query.SQLQueryAdapter.execute(SQLQueryAdapter.java:100)
--    ... 14 more

See repro.java

Probably, yugabyte/ysql/gen/YSQLAlterTableGenerator.java needs the same, but it's already out-of-sync with PostgresAlterTableGenerator.java, so the change left minimal.

@mrigger mrigger left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@mrigger
mrigger merged commit 1d797ee into sqlancer:main Oct 21, 2026
22 of 26 checks passed
@alexanderlaw

Copy link
Copy Markdown
Contributor Author

Thank you for merging it, Manuel!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants