diff --git a/pkg/ccl/storageccl/export_test.go b/pkg/ccl/storageccl/export_test.go index ffd1b42d1ce2..4dcb92076cad 100644 --- a/pkg/ccl/storageccl/export_test.go +++ b/pkg/ccl/storageccl/export_test.go @@ -365,6 +365,12 @@ func assertEqualKVs( lessThisKey := dataSizeWhenExceeded - uint64(len(kv.Key.Key)+len(kv.Value)) if lessThisKey >= maxSize { dataSizeWhenExceeded = lessThisKey + // It might be the case that this key would lead to an SST of exactly + // max size, in this case we overwrite max size to be less so that + // we still generate an error. + if dataSizeWhenExceeded == maxSize { + maxSize-- + } } else { break } diff --git a/pkg/cmd/roachtest/gopg_blacklist.go b/pkg/cmd/roachtest/gopg_blacklist.go index b63fbbd3ead7..33148a5b004a 100644 --- a/pkg/cmd/roachtest/gopg_blacklist.go +++ b/pkg/cmd/roachtest/gopg_blacklist.go @@ -65,38 +65,45 @@ var gopgBlackList20_1 = blacklist{ } var gopgBlackList19_2 = blacklist{ - "pg | CopyFrom/CopyTo | copies corrupted data to a table": "5807", - "pg | CopyFrom/CopyTo | copies data from a table and to a table": "5807", - "pg | CountEstimate | works": "17511", - "pg | CountEstimate | works when there are no results": "17511", - "pg | CountEstimate | works with GROUP": "17511", - "pg | CountEstimate | works with GROUP when there are no results": "17511", - "pg | DB nulls | nil ptr inserts non-null value": "5807", - "pg | DB nulls | nil ptr inserts null value": "5807", - "pg | DB nulls | sql.NullInt64 inserts non-null value": "5807", - "pg | DB nulls | sql.NullInt64 inserts null value": "5807", - "pg | DB uint64 in struct field | is appended and scanned as int64": "5807", - "pg | DB.Select | selects bytea": "5807", - "pg | DB.Select | selects into embedded struct pointer": "5807", - "pg | HookTest | calls AfterSelect for a slice model": "5807", - "pg | HookTest | calls AfterSelect for a struct model": "5807", - "pg | HookTest | calls BeforeDelete and AfterDelete": "5807", - "pg | HookTest | calls BeforeInsert and AfterInsert": "5807", - "pg | HookTest | calls BeforeUpdate and AfterUpdate": "5807", - "pg | HookTest | does not call BeforeDelete and AfterDelete for nil model": "5807", - "pg | HookTest | does not call BeforeUpdate and AfterUpdate for nil model": "5807", - "pg | Listener | is closed when DB is closed": "41522", - "pg | Listener | listens for notifications": "41522", - "pg | Listener | reconnects on receive error": "41522", - "pg | Listener | returns an error on timeout": "41522", - "pg | Listener | supports concurrent Listen and Receive": "41522", - "pg | soft delete | model Deleted allows to select deleted model": "5807", - "pg | soft delete | model ForceDelete deletes the model": "5807", - "pg | soft delete | model soft deletes the model": "5807", - "pg | soft delete | nil model Deleted allows to select deleted model": "5807", - "pg | soft delete | nil model ForceDelete deletes the model": "5807", - "pg | soft delete | nil model soft deletes the model": "5807", - "v9.ExampleDB_Model_postgresArrayStructTag": "5807", + "pg | CopyFrom/CopyTo | copies corrupted data to a table": "5807", + "pg | CopyFrom/CopyTo | copies data from a table and to a table": "5807", + "pg | CountEstimate | works": "17511", + "pg | CountEstimate | works when there are no results": "17511", + "pg | CountEstimate | works with GROUP": "17511", + "pg | CountEstimate | works with GROUP when there are no results": "17511", + "pg | DB nulls | nil ptr inserts non-null value": "5807", + "pg | DB nulls | nil ptr inserts null value": "5807", + "pg | DB nulls | sql.NullInt64 inserts non-null value": "5807", + "pg | DB nulls | sql.NullInt64 inserts null value": "5807", + "pg | DB race | SelectOrInsert without OnConflict is race free": "unknown", + "pg | DB uint64 in struct field | is appended and scanned as int64": "5807", + "pg | DB.Select | selects bytea": "5807", + "pg | DB.Select | selects into embedded struct pointer": "5807", + "pg | HookTest | calls AfterSelect for a slice model": "5807", + "pg | HookTest | calls AfterSelect for a struct model": "5807", + "pg | HookTest | calls BeforeDelete and AfterDelete": "5807", + "pg | HookTest | calls BeforeInsert and AfterInsert": "5807", + "pg | HookTest | calls BeforeUpdate and AfterUpdate": "5807", + "pg | HookTest | does not call BeforeDelete and AfterDelete for nil model": "5807", + "pg | HookTest | does not call BeforeUpdate and AfterUpdate for nil model": "5807", + "pg | Listener | is closed when DB is closed": "41522", + "pg | Listener | listens for notifications": "41522", + "pg | Listener | reconnects on receive error": "41522", + "pg | Listener | returns an error on timeout": "41522", + "pg | Listener | supports concurrent Listen and Receive": "41522", + "pg | soft delete with int column | model Deleted allows to select deleted model": "unknown", + "pg | soft delete with int column | model ForceDelete deletes the model": "unknown", + "pg | soft delete with int column | model soft deletes the model": "unknown", + "pg | soft delete with int column | nil model Deleted allows to select deleted model": "unknown", + "pg | soft delete with int column | nil model ForceDelete deletes the model": "unknown", + "pg | soft delete with int column | nil model soft deletes the model": "unknown", + "pg | soft delete with time column | model Deleted allows to select deleted model": "unknown", + "pg | soft delete with time column | model ForceDelete deletes the model": "unknown", + "pg | soft delete with time column | model soft deletes the model": "unknown", + "pg | soft delete with time column | nil model Deleted allows to select deleted model": "unknown", + "pg | soft delete with time column | nil model ForceDelete deletes the model": "unknown", + "pg | soft delete with time column | nil model soft deletes the model": "unknown", + "v9.ExampleDB_Model_postgresArrayStructTag": "5807", "v9.TestBigColumn": "5807", "v9.TestConversion": "32552", "v9.TestGinkgo": "5807", diff --git a/pkg/cmd/roachtest/orm_helpers.go b/pkg/cmd/roachtest/orm_helpers.go index fc4f41c65ce9..1c70558dd192 100644 --- a/pkg/cmd/roachtest/orm_helpers.go +++ b/pkg/cmd/roachtest/orm_helpers.go @@ -54,6 +54,15 @@ func alterZoneConfigAndClusterSettings( return err } + // Enable temp tables for v20.1 + if strings.HasPrefix(version, "v20.") { + if _, err := db.ExecContext( + ctx, `SET CLUSTER SETTING sql.defaults.experimental_temporary_tables.enabled = 'true';`, + ); err != nil { + return err + } + } + return nil } diff --git a/pkg/cmd/roachtest/pgjdbc_blacklist.go b/pkg/cmd/roachtest/pgjdbc_blacklist.go index cc5c7b7447e9..cedaa2b25a0d 100644 --- a/pkg/cmd/roachtest/pgjdbc_blacklist.go +++ b/pkg/cmd/roachtest/pgjdbc_blacklist.go @@ -26,8 +26,8 @@ var pgjdbcBlackList20_1 = blacklist{ "org.postgresql.jdbc.DeepBatchedInsertStatementTest.testDeepInternalsBatchedQueryDecorator": "26508", "org.postgresql.jdbc.DeepBatchedInsertStatementTest.testUnspecifiedParameterType": "26508", "org.postgresql.jdbc.DeepBatchedInsertStatementTest.testVaryingTypeCounts": "26508", - "org.postgresql.test.core.OptionsPropertyTest.testOptionsInProperties": "26443", "org.postgresql.jdbc.PgSQLXMLTest.setCharacterStream": "43355", + "org.postgresql.test.core.OptionsPropertyTest.testOptionsInProperties": "26443", "org.postgresql.test.jdbc2.ArrayTest.testEscaping[binary = FORCE]": "32552", "org.postgresql.test.jdbc2.ArrayTest.testEscaping[binary = REGULAR]": "32552", "org.postgresql.test.jdbc2.ArrayTest.testMultiDimensionalArray[binary = FORCE]": "32552", @@ -538,10 +538,6 @@ var pgjdbcBlackList20_1 = blacklist{ "org.postgresql.test.jdbc2.BatchExecuteTest.testSelectInBatch[binary = REGULAR, insertRewrite = true]": "40195", "org.postgresql.test.jdbc2.BatchExecuteTest.testSmallBatchUpdateFailureSimple[binary = FORCE, insertRewrite = false]": "41514", "org.postgresql.test.jdbc2.BatchExecuteTest.testSmallBatchUpdateFailureSimple[binary = REGULAR, insertRewrite = false]": "41514", - "org.postgresql.test.jdbc2.BatchExecuteTest.testWarningsAreCleared[binary = FORCE, insertRewrite = false]": "5807", - "org.postgresql.test.jdbc2.BatchExecuteTest.testWarningsAreCleared[binary = FORCE, insertRewrite = true]": "5807", - "org.postgresql.test.jdbc2.BatchExecuteTest.testWarningsAreCleared[binary = REGULAR, insertRewrite = false]": "5807", - "org.postgresql.test.jdbc2.BatchExecuteTest.testWarningsAreCleared[binary = REGULAR, insertRewrite = true]": "5807", "org.postgresql.test.jdbc2.BatchFailureTest.run[105: batchTest(mode=FAIL_VIA_DUP_KEY, position=SECOND_ROW, autoCommit=YES, batchType=PREPARED, generateKeys=YES, binary=REGULAR, insertRewrite=false)]": "41514", "org.postgresql.test.jdbc2.BatchFailureTest.run[107: batchTest(mode=FAIL_VIA_DUP_KEY, position=SECOND_ROW, autoCommit=YES, batchType=PREPARED, generateKeys=YES, binary=FORCE, insertRewrite=false)]": "41514", "org.postgresql.test.jdbc2.BatchFailureTest.run[112: batchTest(mode=FAIL_VIA_DUP_KEY, position=MIDDLE, autoCommit=YES, batchType=PREPARED, generateKeys=YES, binary=REGULAR, insertRewrite=true)]": "41514", @@ -747,10 +743,7 @@ var pgjdbcBlackList20_1 = blacklist{ "org.postgresql.test.jdbc2.GeometricTest.testPGpoint[binary = REGULAR]": "21286", "org.postgresql.test.jdbc2.GeometricTest.testPGpolygon[binary = FORCE]": "21286", "org.postgresql.test.jdbc2.GeometricTest.testPGpolygon[binary = REGULAR]": "21286", - "org.postgresql.test.jdbc2.GetXXXTest.testGetObject": "5807", - "org.postgresql.test.jdbc2.GetXXXTest.testGetUDT": "5807", "org.postgresql.test.jdbc2.JBuilderTest.testMoney": "41578", - "org.postgresql.test.jdbc2.MiscTest.testWarning": "5807", "org.postgresql.test.jdbc2.NotifyTest.testAsyncNotify": "41522", "org.postgresql.test.jdbc2.NotifyTest.testAsyncNotifyWithEndlessTimeoutAndMessagesAvailableWhenStartingListening": "41522", "org.postgresql.test.jdbc2.NotifyTest.testAsyncNotifyWithEndlessTimeoutAndMessagesSendAfter": "41522", @@ -761,54 +754,17 @@ var pgjdbcBlackList20_1 = blacklist{ "org.postgresql.test.jdbc2.NotifyTest.testNotify": "41522", "org.postgresql.test.jdbc2.NotifyTest.testNotifyArgument": "41522", "org.postgresql.test.jdbc2.PGTimeTest.testTimeInsertAndSelect": "5807", - "org.postgresql.test.jdbc2.PGTimeTest.testTimeWithInterval": "5807", "org.postgresql.test.jdbc2.PGTimestampTest.testTimeInsertAndSelect": "41775", - "org.postgresql.test.jdbc2.ParameterStatusTest.expectedInitialParameters": "42119", "org.postgresql.test.jdbc2.ParameterStatusTest.transactionalParametersAutocommit": "32562", "org.postgresql.test.jdbc2.ParameterStatusTest.transactionalParametersCommit": "32562", "org.postgresql.test.jdbc2.ParameterStatusTest.transactionalParametersRollback": "32562", - "org.postgresql.test.jdbc2.PreparedStatementTest.testBatchWithPrepareThreshold0[binary = REGULAR]": "5807", "org.postgresql.test.jdbc2.PreparedStatementTest.testBatchWithPrepareThreshold5[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testDollarQuotesAndIdentifiers[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testDollarQuotesAndIdentifiers[binary = REGULAR]": "5807", "org.postgresql.test.jdbc2.PreparedStatementTest.testDollarQuotes[binary = FORCE]": "41777", "org.postgresql.test.jdbc2.PreparedStatementTest.testDollarQuotes[binary = REGULAR]": "41777", "org.postgresql.test.jdbc2.PreparedStatementTest.testDoubleQuestionMark[binary = FORCE]": "21286", "org.postgresql.test.jdbc2.PreparedStatementTest.testDoubleQuestionMark[binary = REGULAR]": "21286", - "org.postgresql.test.jdbc2.PreparedStatementTest.testDouble[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testDouble[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testFloat[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testFloat[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testNumeric[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testNumeric[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetBooleanDecimal[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetBooleanDecimal[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetBooleanDouble[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetBooleanDouble[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetBooleanNumeric[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetBooleanNumeric[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetFloatBigDecimal[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetFloatBigDecimal[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetFloatInteger[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetFloatInteger[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetFloatString[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetFloatString[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetIntFloat[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetIntFloat[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetObjectBigDecimalUnscaled[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetObjectBigDecimalUnscaled[binary = REGULAR]": "5807", "org.postgresql.test.jdbc2.PreparedStatementTest.testSetObjectBigDecimalWithScale[binary = FORCE]": "5807", "org.postgresql.test.jdbc2.PreparedStatementTest.testSetObjectBigDecimalWithScale[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetObjectNumberFallbackWithAtomicLong[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetObjectNumberFallbackWithAtomicLong[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetObjectNumberFallbackWithBigInteger[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetObjectNumberFallbackWithBigInteger[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetObjectWithBigDecimal[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetObjectWithBigDecimal[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetSmallIntFloat[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetSmallIntFloat[binary = REGULAR]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetTinyIntFloat[binary = FORCE]": "5807", - "org.postgresql.test.jdbc2.PreparedStatementTest.testSetTinyIntFloat[binary = REGULAR]": "5807", "org.postgresql.test.jdbc2.PreparedStatementTest.testSingleQuotes[binary = FORCE]": "36215", "org.postgresql.test.jdbc2.PreparedStatementTest.testSingleQuotes[binary = REGULAR]": "36215", "org.postgresql.test.jdbc2.PreparedStatementTest.testUnknownSetObject[binary = FORCE]": "41779", @@ -924,9 +880,7 @@ var pgjdbcBlackList20_1 = blacklist{ "org.postgresql.test.jdbc2.StatementTest.testWarningsAreCleared": "17511", "org.postgresql.test.jdbc2.StringTypeUnspecifiedArrayTest.testCreateArrayWithNonCachedType[binary = FORCE]": "21286", "org.postgresql.test.jdbc2.StringTypeUnspecifiedArrayTest.testCreateArrayWithNonCachedType[binary = REGULAR]": "21286", - "org.postgresql.test.jdbc2.TimeTest.testGetTime": "5807", "org.postgresql.test.jdbc2.TimeTest.testGetTimeZone": "5807", - "org.postgresql.test.jdbc2.TimeTest.testSetTime": "5807", "org.postgresql.test.jdbc2.TimestampTest.testGetTimestampWOTZ[binary = FORCE]": "41786", "org.postgresql.test.jdbc2.TimestampTest.testGetTimestampWOTZ[binary = REGULAR]": "41786", "org.postgresql.test.jdbc2.TimestampTest.testInfinity[binary = FORCE]": "41786", @@ -937,18 +891,9 @@ var pgjdbcBlackList20_1 = blacklist{ "org.postgresql.test.jdbc2.TimezoneTest.testGetTime": "41776", "org.postgresql.test.jdbc2.TimezoneTest.testGetTimestamp": "41776", "org.postgresql.test.jdbc2.TimezoneTest.testHalfHourTimezone": "41776", - "org.postgresql.test.jdbc2.TimezoneTest.testLocalTimestampsInAfricaCasablanca": "41776", - "org.postgresql.test.jdbc2.TimezoneTest.testLocalTimestampsInAmericaAdak": "41776", - "org.postgresql.test.jdbc2.TimezoneTest.testLocalTimestampsInAtlanticAzores": "41776", - "org.postgresql.test.jdbc2.TimezoneTest.testLocalTimestampsInEuropeMoscow": "41776", - "org.postgresql.test.jdbc2.TimezoneTest.testLocalTimestampsInNonDSTZones": "41776", - "org.postgresql.test.jdbc2.TimezoneTest.testLocalTimestampsInPacificApia": "41776", - "org.postgresql.test.jdbc2.TimezoneTest.testLocalTimestampsInPacificNiue": "41776", "org.postgresql.test.jdbc2.TimezoneTest.testSetDate": "41776", "org.postgresql.test.jdbc2.TimezoneTest.testSetTime": "41776", "org.postgresql.test.jdbc2.TimezoneTest.testSetTimestamp": "41776", - "org.postgresql.test.jdbc2.TimezoneTest.testSetTimestampOnTime": "41776", - "org.postgresql.test.jdbc2.TimezoneTest.testTimezoneWithSeconds": "41776", "org.postgresql.test.jdbc2.UpdateableResultTest.simpleAndUpdateableSameQuery": "19141", "org.postgresql.test.jdbc2.UpdateableResultTest.testArray": "19141", "org.postgresql.test.jdbc2.UpdateableResultTest.testBadColumnIndexes": "19141", @@ -965,38 +910,6 @@ var pgjdbcBlackList20_1 = blacklist{ "org.postgresql.test.jdbc2.UpdateableResultTest.testUpdateable": "19141", "org.postgresql.test.jdbc2.UpdateableResultTest.testUpdateablePreparedStatement": "19141", "org.postgresql.test.jdbc2.UpdateableResultTest.testZeroRowResult": "19141", - "org.postgresql.test.jdbc2.UpsertTest.testMultiValuedUpsertBatch[binary = FORCE, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testMultiValuedUpsertBatch[binary = FORCE, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testMultiValuedUpsertBatch[binary = REGULAR, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testMultiValuedUpsertBatch[binary = REGULAR, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testSingleValuedUpsertBatch[binary = FORCE, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testSingleValuedUpsertBatch[binary = FORCE, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testSingleValuedUpsertBatch[binary = REGULAR, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testSingleValuedUpsertBatch[binary = REGULAR, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testSingleValuedUpsertUpdateBatch[binary = FORCE, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testSingleValuedUpsertUpdateBatch[binary = FORCE, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testSingleValuedUpsertUpdateBatch[binary = REGULAR, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testSingleValuedUpsertUpdateBatch[binary = REGULAR, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testSingleValuedUpsertUpdateConstantBatch[binary = FORCE, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testSingleValuedUpsertUpdateConstantBatch[binary = FORCE, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testSingleValuedUpsertUpdateConstantBatch[binary = REGULAR, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testSingleValuedUpsertUpdateConstantBatch[binary = REGULAR, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoNothingConflict[binary = FORCE, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoNothingConflict[binary = FORCE, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoNothingConflict[binary = REGULAR, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoNothingConflict[binary = REGULAR, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoNothingNoConflict[binary = FORCE, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoNothingNoConflict[binary = FORCE, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoNothingNoConflict[binary = REGULAR, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoNothingNoConflict[binary = REGULAR, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoUpdateConflict[binary = FORCE, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoUpdateConflict[binary = FORCE, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoUpdateConflict[binary = REGULAR, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoUpdateConflict[binary = REGULAR, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoUpdateNoConflict[binary = FORCE, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoUpdateNoConflict[binary = FORCE, reWriteBatchedInserts = YES]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoUpdateNoConflict[binary = REGULAR, reWriteBatchedInserts = NO]": "5807", - "org.postgresql.test.jdbc2.UpsertTest.testUpsertDoUpdateNoConflict[binary = REGULAR, reWriteBatchedInserts = YES]": "5807", "org.postgresql.test.jdbc3.CompositeTest.testComplexArgumentSelect": "27793", "org.postgresql.test.jdbc3.CompositeTest.testComplexSelect": "27793", "org.postgresql.test.jdbc3.CompositeTest.testComplexTableNameMetadata": "27793", @@ -1015,38 +928,6 @@ var pgjdbcBlackList20_1 = blacklist{ "org.postgresql.test.jdbc3.EscapeSyntaxCallModeSelectTest.testInvokeFunction": "17511", "org.postgresql.test.jdbc3.EscapeSyntaxCallModeSelectTest.testInvokeFunctionHavingReturnParameter": "17511", "org.postgresql.test.jdbc3.EscapeSyntaxCallModeSelectTest.testInvokeProcedure": "17511", - "org.postgresql.test.jdbc3.GeneratedKeysTest.breakDescribeOnFirstServerPreparedExecution[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.breakDescribeOnFirstServerPreparedExecution[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.breakDescribeOnFirstServerPreparedExecution[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.breakDescribeOnFirstServerPreparedExecution[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.breakDescribeOnFirstServerPreparedExecution[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.breakDescribeOnFirstServerPreparedExecution[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.breakDescribeOnFirstServerPreparedExecution[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.breakDescribeOnFirstServerPreparedExecution[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaNonPrepared[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaNonPrepared[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaNonPrepared[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaNonPrepared[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaNonPrepared[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaNonPrepared[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaNonPrepared[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaNonPrepared[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecuteQuery[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecuteQuery[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecuteQuery[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecuteQuery[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecuteQuery[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecuteQuery[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecuteQuery[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecuteQuery[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecute[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecute[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecute[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecute[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecute[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecute[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecute[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.selectWithGeneratedKeysViaPreparedExecute[returningInQuery = STAR, binary = REGULAR]": "5807", "org.postgresql.test.jdbc3.GeneratedKeysTest.testBatchGeneratedKeys[returningInQuery = A, binary = FORCE]": "5807", "org.postgresql.test.jdbc3.GeneratedKeysTest.testBatchGeneratedKeys[returningInQuery = A, binary = REGULAR]": "5807", "org.postgresql.test.jdbc3.GeneratedKeysTest.testBatchGeneratedKeys[returningInQuery = AB, binary = FORCE]": "5807", @@ -1055,78 +936,6 @@ var pgjdbcBlackList20_1 = blacklist{ "org.postgresql.test.jdbc3.GeneratedKeysTest.testBatchGeneratedKeys[returningInQuery = NO, binary = REGULAR]": "5807", "org.postgresql.test.jdbc3.GeneratedKeysTest.testBatchGeneratedKeys[returningInQuery = STAR, binary = FORCE]": "5807", "org.postgresql.test.jdbc3.GeneratedKeysTest.testBatchGeneratedKeys[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testCloseStatementClosesRS[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testCloseStatementClosesRS[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testCloseStatementClosesRS[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testCloseStatementClosesRS[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testCloseStatementClosesRS[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testCloseStatementClosesRS[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testCloseStatementClosesRS[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testCloseStatementClosesRS[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testDelete[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testDelete[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testDelete[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testDelete[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testDelete[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testDelete[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testDelete[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testDelete[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testEmptyRSWithoutReturning[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testEmptyRSWithoutReturning[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testEmptyRSWithoutReturning[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testEmptyRSWithoutReturning[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testEmptyRSWithoutReturning[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testEmptyRSWithoutReturning[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testEmptyRSWithoutReturning[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testEmptyRSWithoutReturning[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeysCleared[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeysCleared[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeysCleared[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeysCleared[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeysCleared[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeysCleared[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeysCleared[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeysCleared[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeys[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeys[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeys[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeys[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeys[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeys[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeys[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testGeneratedKeys[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testMultipleRows[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testMultipleRows[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testMultipleRows[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testMultipleRows[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testMultipleRows[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testMultipleRows[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testMultipleRows[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testMultipleRows[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSDelete[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSDelete[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSDelete[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSDelete[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSDelete[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSDelete[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSDelete[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSDelete[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSUpdate[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSUpdate[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSUpdate[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSUpdate[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSUpdate[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSUpdate[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSUpdate[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testPSUpdate[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testReturningWithTrailingSemicolon[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testReturningWithTrailingSemicolon[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testReturningWithTrailingSemicolon[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testReturningWithTrailingSemicolon[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testReturningWithTrailingSemicolon[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testReturningWithTrailingSemicolon[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testReturningWithTrailingSemicolon[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testReturningWithTrailingSemicolon[returningInQuery = STAR, binary = REGULAR]": "5807", "org.postgresql.test.jdbc3.GeneratedKeysTest.testSerialWorks[returningInQuery = A, binary = FORCE]": "5807", "org.postgresql.test.jdbc3.GeneratedKeysTest.testSerialWorks[returningInQuery = A, binary = REGULAR]": "5807", "org.postgresql.test.jdbc3.GeneratedKeysTest.testSerialWorks[returningInQuery = AB, binary = FORCE]": "5807", @@ -1135,38 +944,6 @@ var pgjdbcBlackList20_1 = blacklist{ "org.postgresql.test.jdbc3.GeneratedKeysTest.testSerialWorks[returningInQuery = NO, binary = REGULAR]": "5807", "org.postgresql.test.jdbc3.GeneratedKeysTest.testSerialWorks[returningInQuery = STAR, binary = FORCE]": "5807", "org.postgresql.test.jdbc3.GeneratedKeysTest.testSerialWorks[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testStatementUpdateCount[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testStatementUpdateCount[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testStatementUpdateCount[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testStatementUpdateCount[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testStatementUpdateCount[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testStatementUpdateCount[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testStatementUpdateCount[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testStatementUpdateCount[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testUpdate[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testUpdate[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testUpdate[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testUpdate[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testUpdate[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testUpdate[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testUpdate[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testUpdate[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertInsert[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertInsert[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertInsert[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertInsert[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertInsert[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertInsert[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertInsert[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertInsert[returningInQuery = STAR, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertSelect[returningInQuery = A, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertSelect[returningInQuery = A, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertSelect[returningInQuery = AB, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertSelect[returningInQuery = AB, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertSelect[returningInQuery = NO, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertSelect[returningInQuery = NO, binary = REGULAR]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertSelect[returningInQuery = STAR, binary = FORCE]": "5807", - "org.postgresql.test.jdbc3.GeneratedKeysTest.testWithInsertSelect[returningInQuery = STAR, binary = REGULAR]": "5807", "org.postgresql.test.jdbc3.Jdbc3BlobTest.test1Byte": "26725", "org.postgresql.test.jdbc3.Jdbc3BlobTest.test1ByteOffset": "26725", "org.postgresql.test.jdbc3.Jdbc3BlobTest.test1ByteOffsetStream": "26725", @@ -1221,8 +998,6 @@ var pgjdbcBlackList20_1 = blacklist{ "org.postgresql.test.jdbc3.ParameterMetaDataTest.testMultiStatement": "21286", "org.postgresql.test.jdbc3.ParameterMetaDataTest.testParameterMD": "21286", "org.postgresql.test.jdbc3.ParameterMetaDataTest.testTypeChangeWithUnknown": "21286", - "org.postgresql.test.jdbc3.ResultSetTest.testHoldableResultSet": "5807", - "org.postgresql.test.jdbc3.SendRecvBufferSizeTest.testSelect": "5807", "org.postgresql.test.jdbc3.StringTypeParameterTest.testMultipleEnumBinds[stringType = null]": "27793", "org.postgresql.test.jdbc3.StringTypeParameterTest.testMultipleEnumBinds[stringType = unspecified]": "27793", "org.postgresql.test.jdbc3.StringTypeParameterTest.testMultipleEnumBinds[stringType = varchar]": "27793", @@ -1298,14 +1073,8 @@ var pgjdbcBlackList20_1 = blacklist{ "org.postgresql.test.jdbc4.PGCopyInputStreamTest.testReadBytesCorrectlyHandlesEof": "41608", "org.postgresql.test.jdbc4.PGCopyInputStreamTest.testReadBytesCorrectlyReadsDataInChunks": "41608", "org.postgresql.test.jdbc4.PGCopyInputStreamTest.testStreamCanBeClosedAfterReadUp": "41608", - "org.postgresql.test.jdbc4.UUIDTest.testUUIDString[binary=FORCE, stringType=UNSPECIFIED]": "5807", "org.postgresql.test.jdbc4.UUIDTest.testUUIDString[binary=FORCE, stringType=VARCHAR]": "5807", - "org.postgresql.test.jdbc4.UUIDTest.testUUIDString[binary=REGULAR, stringType=UNSPECIFIED]": "5807", "org.postgresql.test.jdbc4.UUIDTest.testUUIDString[binary=REGULAR, stringType=VARCHAR]": "5807", - "org.postgresql.test.jdbc4.UUIDTest.testUUID[binary=FORCE, stringType=UNSPECIFIED]": "5807", - "org.postgresql.test.jdbc4.UUIDTest.testUUID[binary=FORCE, stringType=VARCHAR]": "5807", - "org.postgresql.test.jdbc4.UUIDTest.testUUID[binary=REGULAR, stringType=UNSPECIFIED]": "5807", - "org.postgresql.test.jdbc4.UUIDTest.testUUID[binary=REGULAR, stringType=VARCHAR]": "5807", "org.postgresql.test.jdbc4.jdbc41.GetObjectTest.testGetArray": "26097", "org.postgresql.test.jdbc4.jdbc41.GetObjectTest.testGetBigDecimal": "26097", "org.postgresql.test.jdbc4.jdbc41.GetObjectTest.testGetBigInteger": "26097", diff --git a/pkg/cmd/roachtest/pgx_blacklist.go b/pkg/cmd/roachtest/pgx_blacklist.go index 9f031b4f08b1..e90f182c206b 100644 --- a/pkg/cmd/roachtest/pgx_blacklist.go +++ b/pkg/cmd/roachtest/pgx_blacklist.go @@ -19,61 +19,44 @@ var pgxBlacklists = blacklistsForVersion{ // After a failed run, an updated version of this blacklist should be available // in the test log. var pgxBlackList20_1 = blacklist{ - "v4.Example_CustomType": "27796", - "v4.TestConnBeginBatchDeferredError": "31632", - "v4.TestConnCopyFromCopyFromSourceErrorEnd": "5807", - "v4.TestConnCopyFromCopyFromSourceErrorMidway": "5807", - "v4.TestConnCopyFromFailServerSideMidway": "5807", - "v4.TestConnCopyFromFailServerSideMidwayAbortsWithoutWaiting": "5807", - "v4.TestConnCopyFromJSON": "5807", - "v4.TestConnCopyFromLarge": "5807", - "v4.TestConnCopyFromSmall": "5807", - "v4.TestConnQueryDatabaseSQLDriverValuerWithAutoGeneratedPointerReceiver": "5807", - "v4.TestConnQueryDeferredError": "31632", - "v4.TestConnQueryErrorWhileReturningRows": "26925", - "v4.TestConnQueryReadRowMultipleTimes": "26925", - "v4.TestConnQueryValues": "26925", - "v4.TestConnQueryValuesWithUnknownOID": "24873", - "v4.TestConnQueryWithoutResultSetCommandTag": "5807", - "v4.TestConnSendBatch": "5807", - "v4.TestConnSendBatchMany": "5807", - "v4.TestConnSendBatchQueryPartialReadInsert": "5807", - "v4.TestConnSendBatchQueryRowInsert": "5807", - "v4.TestConnSendBatchWithPreparedStatement": "41558", - "v4.TestConnSimpleProtocol": "21286", - "v4.TestConnSimpleProtocolRefusesNonStandardConformingStrings": "36215", - "v4.TestConnSimpleProtocolRefusesNonUTF8ClientEncoding": "37129", - "v4.TestDomainType": "27796", - "v4.TestExec": "5807", - "v4.TestExecContextWithoutCancelation": "5807", - "v4.TestExecExtendedProtocol": "5807", - "v4.TestExecSimpleProtocol": "5807", - "v4.TestFatalRxError": "35897", - "v4.TestFatalTxError": "35897", - "v4.TestInetCIDRArrayTranscodeIP": "18846", - "v4.TestInetCIDRArrayTranscodeIPNet": "18846", - "v4.TestInetCIDRTranscodeIP": "18846", - "v4.TestInetCIDRTranscodeIPNet": "18846", - "v4.TestInetCIDRTranscodeWithJustIP": "18846", - "v4.TestInsertBoolArray": "5807", - "v4.TestInsertTimestampArray": "5807", - "v4.TestLargeObjects": "26725", - "v4.TestLargeObjectsMultipleTransactions": "26725", - "v4.TestLargeObjectsPreferSimpleProtocol": "26725", - "v4.TestListenNotify": "41522", - "v4.TestListenNotifySelfNotification": "41522", - "v4.TestListenNotifyWhileBusyIsSafe": "41522", - "v4.TestQueryContextErrorWhileReceivingRows": "26925", - "v4.TestRowDecode": "26925", - "v4.TestTransactionSuccessfulCommit": "31632", - "v4.TestTransactionSuccessfulRollback": "31632", - "v4.TestTxCommitSerializationFailure": "5807", - "v4.TestTxCommitWhenTxBroken": "31632", - "v4.TestTxNestedTransactionCommit": "31632", - "v4.TestTxNestedTransactionRollback": "31632", - "v4.TestTxSendBatch": "5807", - "v4.TestTxSendBatchRollback": "5807", - "v4.TestUnregisteredTypeUsableAsStringArgumentAndBaseResult": "27796", + "v4.Example_CustomType": "27796", + "v4.TestConnBeginBatchDeferredError": "31632", + "v4.TestConnCopyFromFailServerSideMidway": "5807", + "v4.TestConnCopyFromJSON": "5807", + "v4.TestConnCopyFromLarge": "5807", + "v4.TestConnCopyFromSmall": "5807", + "v4.TestConnQueryDeferredError": "31632", + "v4.TestConnQueryErrorWhileReturningRows": "26925", + "v4.TestConnQueryReadRowMultipleTimes": "26925", + "v4.TestConnQueryValues": "26925", + "v4.TestConnSendBatch": "5807", + "v4.TestConnSendBatchWithPreparedStatement": "41558", + "v4.TestConnSimpleProtocol": "21286", + "v4.TestConnSimpleProtocolRefusesNonStandardConformingStrings": "36215", + "v4.TestConnSimpleProtocolRefusesNonUTF8ClientEncoding": "37129", + "v4.TestDomainType": "27796", + "v4.TestFatalRxError": "35897", + "v4.TestFatalTxError": "35897", + "v4.TestInetCIDRArrayTranscodeIP": "18846", + "v4.TestInetCIDRArrayTranscodeIPNet": "18846", + "v4.TestInetCIDRTranscodeIP": "18846", + "v4.TestInetCIDRTranscodeIPNet": "18846", + "v4.TestInetCIDRTranscodeWithJustIP": "18846", + "v4.TestLargeObjects": "26725", + "v4.TestLargeObjectsMultipleTransactions": "26725", + "v4.TestLargeObjectsPreferSimpleProtocol": "26725", + "v4.TestListenNotify": "41522", + "v4.TestListenNotifySelfNotification": "41522", + "v4.TestListenNotifyWhileBusyIsSafe": "41522", + "v4.TestQueryContextErrorWhileReceivingRows": "26925", + "v4.TestRowDecode": "26925", + "v4.TestTransactionSuccessfulCommit": "31632", + "v4.TestTransactionSuccessfulRollback": "31632", + "v4.TestTxCommitSerializationFailure": "5807", + "v4.TestTxCommitWhenTxBroken": "31632", + "v4.TestTxNestedTransactionCommit": "31632", + "v4.TestTxNestedTransactionRollback": "31632", + "v4.TestUnregisteredTypeUsableAsStringArgumentAndBaseResult": "27796", } var pgxIgnoreList20_1 = blacklist{ diff --git a/pkg/cmd/roachtest/sqlalchemy_blacklist.go b/pkg/cmd/roachtest/sqlalchemy_blacklist.go index cd12a2357bbc..d6cb85fb62a7 100644 --- a/pkg/cmd/roachtest/sqlalchemy_blacklist.go +++ b/pkg/cmd/roachtest/sqlalchemy_blacklist.go @@ -71,6 +71,9 @@ var sqlAlchemyBlacklist20_1 = blacklist{ "test/dialect/test_suite.py::ExpandingBoundInTest_cockroachdb+psycopg2_9_5_0::test_null_in_empty_set_is_false": "41596", "test/dialect/test_suite.py::HasTableTest_cockroachdb+psycopg2_9_5_0::test_has_table": "26443", "test/dialect/test_suite.py::HasTableTest_cockroachdb+psycopg2_9_5_0::test_has_table_schema": "26443", + "test/dialect/test_suite.py::JSONTest::test_single_element_round_trip[a": "unknown", + "test/dialect/test_suite.py::JSONTest::test_single_element_round_trip[r\xe9ve": "unknown", + "test/dialect/test_suite.py::JSONTest::test_single_element_round_trip[r\xe9ve\U0001f40d": "unknown", "test/dialect/test_suite.py::LastrowidTest_cockroachdb+psycopg2_9_5_0::test_autoincrement_on_insert": "41690", "test/dialect/test_suite.py::ReturningTest_cockroachdb+psycopg2_9_5_0::test_autoincrement_on_insert_implicit_returning": "41690", "test/dialect/test_suite.py::ServerSideCursorsTest_cockroachdb+psycopg2_9_5_0::test_aliases_and_ss": "41412", @@ -84,7 +87,7 @@ var sqlAlchemyBlacklist20_1 = blacklist{ "test/dialect/test_suite.py::ServerSideCursorsTest_cockroachdb+psycopg2_9_5_0::test_stmt_option": "41412", "test/dialect/test_suite.py::ServerSideCursorsTest_cockroachdb+psycopg2_9_5_0::test_stmt_option_disabled": "41412", "test/dialect/test_suite.py::ServerSideCursorsTest_cockroachdb+psycopg2_9_5_0::test_text_ss_option": "41412", - "test/dialect/test_suite.py::TableDDLTest_cockroachdb+psycopg2_9_5_0::test_create_table_schema": "26443", + "test/dialect/test_suite.py::TableDDLTest_cockroachdb+psycopg2_9_5_0::test_create_table_schema": "unknown", } var sqlAlchemyBlacklist = blacklist{ diff --git a/pkg/sql/colcontainer/diskqueue.go b/pkg/sql/colcontainer/diskqueue.go index 47213f43a53c..166e1a8faa38 100644 --- a/pkg/sql/colcontainer/diskqueue.go +++ b/pkg/sql/colcontainer/diskqueue.go @@ -129,10 +129,10 @@ func (w *diskQueueWriter) numBytesBuffered() int { // diskQueue is an on-disk queue of coldata.Batches that implements the Queue // interface. coldata.Batches are serialized and buffered up until // DiskQueueCfg.BufferSizeBytes are reached, after which they are compressed and -// flushed to a file. Files will be created in DiskQueueCfg.Dir with increasing -// sequence numbers. When a file reaches DiskQueueCfg.MaxFileSizeBytes, a new file -// is created with the next sequential file number to store the next batches in -// the queue. +// flushed to a file. A directory with a random UUID name will be created in +// cfg.Path, and files will be created in that directory using sequence numbers. +// When a file reaches DiskQueueCfg.MaxFileSizeBytes, a new file is created with +// the next sequential file number to store the next batches in the queue. // Note that files will be cleaned up as coldata.Batches are dequeued from the // diskQueue. DiskQueueCfg.Dir will also be removed on Close, deleting all files. // A diskQueue will never use more memory than cfg.BufferSizeBytes, but not all @@ -148,6 +148,9 @@ func (w *diskQueueWriter) numBytesBuffered() int { // ensure that we only use DiskQueues for the write-everything, read-everything // pattern. type diskQueue struct { + // dirName is the directory in cfg.Path that holds this queue's files. + dirName string + typs []coltypes.T cfg DiskQueueCfg files []file @@ -205,11 +208,9 @@ const ( type DiskQueueCfg struct { // FS is the filesystem interface to use. FS vfs.FS - // Path is where the temporary files should be created. + // Path is where the temporary directory that will contain this DiskQueue's + // files should be created. The directory name will be a UUID. Path string - // Dir is the directory that will be created to store all of a Queue's files. - // This directory will be removed on Close. - Dir string // BufferSizeBytes is the number of bytes to buffer before compressing and // writing to disk. BufferSizeBytes int @@ -227,11 +228,10 @@ type DiskQueueCfg struct { } // EnsureDefaults ensures that optional fields are set to reasonable defaults. -func (cfg *DiskQueueCfg) EnsureDefaults() { - // An unset Path is allowed. A random directory name will be generated if - // unset. - if cfg.Dir == "" { - cfg.Dir = uuid.FastMakeV4().String() +// If any necessary options have been elided, an error is returned. +func (cfg *DiskQueueCfg) EnsureDefaults() error { + if cfg.FS == nil { + return errors.New("FS unset on DiskQueueCfg") } if cfg.BufferSizeBytes == 0 { cfg.BufferSizeBytes = defaultBufferSizeBytes @@ -239,17 +239,21 @@ func (cfg *DiskQueueCfg) EnsureDefaults() { if cfg.MaxFileSizeBytes == 0 { cfg.MaxFileSizeBytes = defaultMaxFileSizeBytes } + return nil } // NewDiskQueue creates a Queue that spills to disk. func NewDiskQueue(typs []coltypes.T, cfg DiskQueueCfg) (Queue, error) { - cfg.EnsureDefaults() + if err := cfg.EnsureDefaults(); err != nil { + return nil, err + } d := &diskQueue{ - typs: typs, - cfg: cfg, - files: make([]file, 0, 4), + dirName: uuid.FastMakeV4().String(), + typs: typs, + cfg: cfg, + files: make([]file, 0, 4), } - if err := cfg.FS.MkdirAll(filepath.Join(cfg.Path, cfg.Dir), 0755); err != nil { + if err := cfg.FS.MkdirAll(filepath.Join(cfg.Path, d.dirName), 0755); err != nil { return nil, err } // rotateFile will create a new file to write to. @@ -282,7 +286,7 @@ func (d *diskQueue) Close() error { d.readFile = nil // The readFile will be removed below in RemoveAll. } - if err := d.cfg.FS.RemoveAll(filepath.Join(d.cfg.Path, d.cfg.Dir)); err != nil { + if err := d.cfg.FS.RemoveAll(filepath.Join(d.cfg.Path, d.dirName)); err != nil { return err } return nil @@ -295,7 +299,7 @@ func (d *diskQueue) Close() error { // any file (i.e. during initialization). This will simply create the first file // to write to. func (d *diskQueue) rotateFile() error { - fName := filepath.Join(d.cfg.Path, d.cfg.Dir, strconv.Itoa(d.seqNo)) + fName := filepath.Join(d.cfg.Path, d.dirName, strconv.Itoa(d.seqNo)) f, err := d.cfg.FS.Create(fName) if err != nil { return err diff --git a/pkg/sql/colcontainer/diskqueue_test.go b/pkg/sql/colcontainer/diskqueue_test.go index 4e0237ac3dcf..5c1e3f6cb16d 100644 --- a/pkg/sql/colcontainer/diskqueue_test.go +++ b/pkg/sql/colcontainer/diskqueue_test.go @@ -13,7 +13,6 @@ import ( "context" "flag" "fmt" - "strings" "testing" "github.com/cockroachdb/cockroach/pkg/col/coldata" @@ -29,7 +28,8 @@ import ( func TestDiskQueue(t *testing.T) { defer leaktest.AfterTest(t)() - queueCfg, cleanup := colcontainer.NewTestingDiskQueueCfg(t, true /* inMem */) + queueCfg, cleanup, err := colcontainer.NewTestingDiskQueueCfg(t, true /* inMem */) + require.NoError(t, err) defer cleanup() availableTyps := make([]coltypes.T, 0, len(coltypes.AllTypes)) @@ -64,6 +64,11 @@ func TestDiskQueue(t *testing.T) { q, err := colcontainer.NewDiskQueue(typs, queueCfg) require.NoError(t, err) + // Verify that a directory was created. + directories, err := queueCfg.FS.List(queueCfg.Path) + require.NoError(t, err) + require.Equal(t, 1, len(directories)) + // Run verification. ctx := context.Background() for { @@ -107,13 +112,9 @@ func TestDiskQueue(t *testing.T) { require.NoError(t, q.Close()) // Verify no directories are left over. - files, err := queueCfg.FS.List(queueCfg.Path) + directories, err = queueCfg.FS.List(queueCfg.Path) require.NoError(t, err) - for _, f := range files { - if strings.HasPrefix(f, queueCfg.Dir) { - t.Fatal("files left over after disk queue test") - } - } + require.Equal(t, 0, len(directories)) }) } } @@ -146,7 +147,8 @@ func BenchmarkDiskQueue(b *testing.B) { } numBatches := int(dataSize / (8 * int64(coldata.BatchSize()))) - queueCfg, cleanup := colcontainer.NewTestingDiskQueueCfg(b, false /* inMem */) + queueCfg, cleanup, err := colcontainer.NewTestingDiskQueueCfg(b, false /* inMem */) + require.NoError(b, err) defer cleanup() queueCfg.BufferSizeBytes = int(bufSize) queueCfg.MaxFileSizeBytes = int(blockSize) diff --git a/pkg/sql/colcontainer/testutils.go b/pkg/sql/colcontainer/testutils.go index 03d5c334a503..16dbac48a406 100644 --- a/pkg/sql/colcontainer/testutils.go +++ b/pkg/sql/colcontainer/testutils.go @@ -20,7 +20,7 @@ import ( const inMemDirName = "testing" // NewTestingDiskQueueCfg returns a DiskQueueCfg and a non-nil cleanup function. -func NewTestingDiskQueueCfg(t testing.TB, inMem bool) (DiskQueueCfg, func()) { +func NewTestingDiskQueueCfg(t testing.TB, inMem bool) (DiskQueueCfg, func(), error) { t.Helper() var ( @@ -30,12 +30,12 @@ func NewTestingDiskQueueCfg(t testing.TB, inMem bool) (DiskQueueCfg, func()) { path string ) - cfg.EnsureDefaults() if inMem { fs = vfs.NewMem() if err := fs.MkdirAll(inMemDirName, 0755); err != nil { t.Fatal(err) } + path = inMemDirName } else { fs = vfs.Default path, cleanup = testutils.TempDir(t) @@ -46,5 +46,9 @@ func NewTestingDiskQueueCfg(t testing.TB, inMem bool) (DiskQueueCfg, func()) { if cleanup == nil { cleanup = func() {} } - return cfg, cleanup + if err := cfg.EnsureDefaults(); err != nil { + return cfg, cleanup, err + } + + return cfg, cleanup, nil } diff --git a/pkg/sql/colexec/main_test.go b/pkg/sql/colexec/main_test.go index 754c9e9ead28..07362316c93f 100644 --- a/pkg/sql/colexec/main_test.go +++ b/pkg/sql/colexec/main_test.go @@ -19,6 +19,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/col/coldata" "github.com/cockroachdb/cockroach/pkg/settings/cluster" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" + "github.com/cockroachdb/cockroach/pkg/util/envutil" "github.com/cockroachdb/cockroach/pkg/util/mon" "github.com/cockroachdb/cockroach/pkg/util/randutil" ) @@ -45,13 +46,22 @@ func TestMain(m *testing.M) { testMemAcc = &memAcc testAllocator = NewAllocator(ctx, testMemAcc) defer testMemAcc.Close(ctx) - rng, _ := randutil.NewPseudoRand() // Pick a random batch size in [coldata.MinBatchSize, coldata.MaxBatchSize] - // range. - randomBatchSize := uint16(coldata.MinBatchSize + - rng.Intn(coldata.MaxBatchSize-coldata.MinBatchSize)) + // range. The randomization can be disabled using COCKROACH_RANDOMIZE_BATCH_SIZE=false. + randomBatchSize := generateBatchSize() fmt.Printf("coldata.BatchSize() is set to %d\n", randomBatchSize) coldata.SetBatchSizeForTests(randomBatchSize) return m.Run() }()) } + +func generateBatchSize() uint16 { + randomizeBatchSize := envutil.EnvOrDefaultBool("COCKROACH_RANDOMIZE_BATCH_SIZE", true) + if randomizeBatchSize { + rng, _ := randutil.NewPseudoRand() + batchSize := uint16(coldata.MinBatchSize + + rng.Intn(coldata.MaxBatchSize-coldata.MinBatchSize)) + return batchSize + } + return coldata.BatchSize() +} diff --git a/pkg/sql/create_table.go b/pkg/sql/create_table.go index 71399a0274cf..f21e9c5e123f 100644 --- a/pkg/sql/create_table.go +++ b/pkg/sql/create_table.go @@ -26,6 +26,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgcode" "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgerror" "github.com/cockroachdb/cockroach/pkg/sql/row" + "github.com/cockroachdb/cockroach/pkg/sql/schema" "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" "github.com/cockroachdb/cockroach/pkg/sql/sqlbase" "github.com/cockroachdb/cockroach/pkg/sql/sqltelemetry" @@ -428,7 +429,11 @@ func qualifyFKColErrorWithDB( if err != nil { return tree.ErrString(tree.NewUnresolvedName(tbl.Name, col)) } - return tree.ErrString(tree.NewUnresolvedName(db.Name, tree.PublicSchema, tbl.Name, col)) + schema, err := schema.ResolveNameByID(ctx, txn, db.ID, tbl.GetParentSchemaID()) + if err != nil { + return tree.ErrString(tree.NewUnresolvedName(tbl.Name, col)) + } + return tree.ErrString(tree.NewUnresolvedName(db.Name, schema, tbl.Name, col)) } // FKTableState is the state of the referencing table resolveFK() is called on. diff --git a/pkg/sql/descriptor.go b/pkg/sql/descriptor.go index 5be65a06dee9..c73ebf191a32 100644 --- a/pkg/sql/descriptor.go +++ b/pkg/sql/descriptor.go @@ -322,39 +322,6 @@ func GetAllDatabaseDescriptorIDs(ctx context.Context, txn *client.Txn) ([]sqlbas return descIDs, nil } -// GetSchemasForDatabase looks up and returns all available -// schema ids to names -func GetSchemasForDatabase( - ctx context.Context, txn *client.Txn, dbID sqlbase.ID, -) (map[sqlbase.ID]string, error) { - log.Eventf(ctx, "fetching all schema descriptor IDs for %d", dbID) - - nameKey := sqlbase.NewSchemaKey(dbID, "" /* name */).Key() - kvs, err := txn.Scan(ctx, nameKey, nameKey.PrefixEnd(), 0 /* maxRows */) - if err != nil { - return nil, err - } - - // Always add public schema ID. - // TODO(solon): This can be removed in 20.2, when this is always written. - // In 20.1, in a migrating state, it may be not included yet. - ret := make(map[sqlbase.ID]string, len(kvs)+1) - ret[sqlbase.ID(keys.PublicSchemaID)] = tree.PublicSchema - - for _, kv := range kvs { - id := sqlbase.ID(kv.ValueInt()) - if _, ok := ret[id]; ok { - continue - } - _, _, name, err := sqlbase.DecodeNameMetadataKey(kv.Key) - if err != nil { - return nil, err - } - ret[id] = name - } - return ret, nil -} - // writeDescToBatch adds a Put command writing a descriptor proto to the // descriptors table. It writes the descriptor desc at the id descID. If kvTrace // is enabled, it will log an event explaining the put that was performed. diff --git a/pkg/sql/logictest/testdata/logic_test/temp_table b/pkg/sql/logictest/testdata/logic_test/temp_table index ee717041bdcc..ab144c8395de 100644 --- a/pkg/sql/logictest/testdata/logic_test/temp_table +++ b/pkg/sql/logictest/testdata/logic_test/temp_table @@ -40,3 +40,17 @@ temp_table_test statement ok DROP TABLE temp_table_ref CASCADE; DROP TABLE temp_table_test CASCADE + +subtest foreign_key_errors + +statement ok +CREATE TEMP TABLE a (a int) + +statement error cannot add a SET NULL cascading action on column "test\.pg_temp.*\.b\.c" which has a NOT NULL constraint +CREATE TEMP TABLE b (c int NOT NULL PRIMARY KEY, FOREIGN KEY (c) REFERENCES a ON UPDATE SET NULL) + +statement error cannot add a SET DEFAULT cascading action on column "test\.pg_temp_.*\.b\.c" which has a NOT NULL constraint and a NULL default expression +CREATE TEMP TABLE b (c int DEFAULT NULL PRIMARY KEY, FOREIGN KEY (c) REFERENCES a ON UPDATE SET DEFAULT) + +statement ok +DROP TABLE a diff --git a/pkg/sql/row/cascader.go b/pkg/sql/row/cascader.go index 33aee8c33f57..ac7a673b42f7 100644 --- a/pkg/sql/row/cascader.go +++ b/pkg/sql/row/cascader.go @@ -19,6 +19,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgcode" "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgerror" "github.com/cockroachdb/cockroach/pkg/sql/rowcontainer" + "github.com/cockroachdb/cockroach/pkg/sql/schema" "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" "github.com/cockroachdb/cockroach/pkg/sql/sqlbase" "github.com/cockroachdb/cockroach/pkg/util" @@ -948,9 +949,18 @@ func (c *cascader) updateRows( if err != nil { return nil, nil, nil, 0, err } + schema, err := schema.ResolveNameByID( + ctx, + c.txn, + referencingTable.ParentID, + referencingTable.GetParentSchemaID(), + ) + if err != nil { + return nil, nil, nil, 0, err + } return nil, nil, nil, 0, pgerror.Newf(pgcode.NullValueNotAllowed, "cannot cascade a null value into %q as it violates a NOT NULL constraint", - tree.ErrString(tree.NewUnresolvedName(database.Name, tree.PublicSchema, referencingTable.Name, column.Name))) + tree.ErrString(tree.NewUnresolvedName(database.Name, schema, referencingTable.Name, column.Name))) } } continue diff --git a/pkg/sql/schema/schema.go b/pkg/sql/schema/schema.go new file mode 100644 index 000000000000..11711033fdc0 --- /dev/null +++ b/pkg/sql/schema/schema.go @@ -0,0 +1,78 @@ +// Copyright 2020 The Cockroach Authors. +// +// Use of this software is governed by the Business Source License +// included in the file licenses/BSL.txt. +// +// As of the Change Date specified in that file, in accordance with +// the Business Source License, use of this software will be governed +// by the Apache License, Version 2.0, included in the file +// licenses/APL.txt. + +// Package schema is to avoid a circular dependency on pkg/sql/row and pkg/sql. +// It can be removed once schemas can be resolved to a protobuf. +package schema + +import ( + "context" + + "github.com/cockroachdb/cockroach/pkg/internal/client" + "github.com/cockroachdb/cockroach/pkg/keys" + "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" + "github.com/cockroachdb/cockroach/pkg/sql/sqlbase" + "github.com/cockroachdb/cockroach/pkg/util/log" + "github.com/cockroachdb/errors" +) + +// ResolveNameByID resolves a schema's name based on db and schema id. +// TODO(sqlexec): this should return the descriptor instead if given an ID. +// Instead, we have to rely on a scan of the kv table. +// TODO(sqlexec): this should probably be cached. +func ResolveNameByID( + ctx context.Context, txn *client.Txn, dbID sqlbase.ID, schemaID sqlbase.ID, +) (string, error) { + // Fast-path for public schema, to avoid hot lookups. + if schemaID == keys.PublicSchemaID { + return string(tree.PublicSchemaName), nil + } + schemas, err := GetForDatabase(ctx, txn, dbID) + if err != nil { + return "", err + } + if schema, ok := schemas[schemaID]; ok { + return schema, nil + } + return "", errors.Newf("unable to resolve schema id %d for db %d", schemaID, dbID) +} + +// GetForDatabase looks up and returns all available +// schema ids to names for a given database. +func GetForDatabase( + ctx context.Context, txn *client.Txn, dbID sqlbase.ID, +) (map[sqlbase.ID]string, error) { + log.Eventf(ctx, "fetching all schema descriptor IDs for %d", dbID) + + nameKey := sqlbase.NewSchemaKey(dbID, "" /* name */).Key() + kvs, err := txn.Scan(ctx, nameKey, nameKey.PrefixEnd(), 0 /* maxRows */) + if err != nil { + return nil, err + } + + // Always add public schema ID. + // TODO(solon): This can be removed in 20.2, when this is always written. + // In 20.1, in a migrating state, it may be not included yet. + ret := make(map[sqlbase.ID]string, len(kvs)+1) + ret[sqlbase.ID(keys.PublicSchemaID)] = tree.PublicSchema + + for _, kv := range kvs { + id := sqlbase.ID(kv.ValueInt()) + if _, ok := ret[id]; ok { + continue + } + _, _, name, err := sqlbase.DecodeNameMetadataKey(kv.Key) + if err != nil { + return nil, err + } + ret[id] = name + } + return ret, nil +} diff --git a/pkg/sql/table.go b/pkg/sql/table.go index b1662ca437e9..5b81f06f8e81 100644 --- a/pkg/sql/table.go +++ b/pkg/sql/table.go @@ -21,6 +21,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/jobs/jobspb" "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/settings/cluster" + "github.com/cockroachdb/cockroach/pkg/sql/schema" "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" "github.com/cockroachdb/cockroach/pkg/sql/sqlbase" "github.com/cockroachdb/cockroach/pkg/util/log" @@ -678,7 +679,7 @@ func (tc *TableCollection) getSchemasForDatabase( } if _, ok := tc.cachedDatabaseToSchemas[dbID]; !ok { var err error - tc.cachedDatabaseToSchemas[dbID], err = GetSchemasForDatabase(ctx, txn, dbID) + tc.cachedDatabaseToSchemas[dbID], err = schema.GetForDatabase(ctx, txn, dbID) if err != nil { return nil, err }