From my latest run of the simpletest test suite here are the tests that are failing on PostgreSQL:
Drupal test run
---------------
All tests will run.
Test run started: Friday, February 5, 2010 - 10:14
Test summary:
-------------
Anonymous comments 127 passes, 12 fails, and 4 exceptions
Comment blocks 93 passes, 16 fails, and 7 exceptions
Comment Rebuild 29 passes, 1 fail, and 1 exception
Comment approval 104 passes, 0 fails, and 2 exceptions
Comment interface 198 passes, 7 fails, and 6 exceptions
Comment preview 73 passes, 0 fails, and 1 exception
Comment RSS 22 passes, 2 fails, and 1 exception
Comment paging settings 206 passes, 0 fails, and 11 exceptions
Field CRUD tests 47 passes, 0 fails, and 1 exception
Field attach tests (storage-related) 91 passes, 0 fails, and 1 exception
List field 11 passes, 0 fails, and 1 exception
Field UI tests 102 passes, 2 fails, and 1 exception
File field validation tests 91 passes, 0 fails, and 1 exception
Forum functionality 527 passes, 1 fail, and 1 exception
RDFa comment markup 133 passes, 8 fails, and 4 exceptions
RDF tracker page mapping 38 passes, 4 fails, and 2 exceptions
Comment Search tests 54 passes, 0 fails, and 1 exception
Search engine ranking 30 passes, 0 fails, and 1 exception
Session https handling 52 passes, 1 fail, and 1 exception
Tracker 206 passes, 1 fail, and 5 exceptions
Trigger other actions 71 passes, 0 fails, and 1 exception
Cancel account 237 passes, 0 fails, and 1 exception
Schema API 13 passes, 5 fails, and 0 exceptions
Forum functionality 527 passes, 1 fail, and 1 exception
String translate, search and validate 240 passes, 2 fails, and 0 exceptions
Session https handling 52 passes, 1 fail, and 1 exception
Flood control mechanism 5 passes, 1 fail, and 0 exceptions
Tracker 206 passes, 1 fail, and 5 exceptions
Update contrib functionality 78 passes, 31 fails, and 0 exceptions
Update core functionality 129 passes, 18 fails, and 0 exceptions
Test run duration: 5 hours 37 min
Thats right! it took me over 5 hours to run the test suite in concurrency (4 concurrent processes)
Anyway, the idea of this issue is to be a parent issue for all of these failed tests which we can then fork off to there own issue as each issue is found.
| Comment | File | Size | Author |
|---|---|---|---|
| #65 | 710858-65.patch | 295 bytes | mcdruid |
Comments
Comment #1
bellHead commentedThe patch for Field attach tests (storage-related) is at #706248: field_sql_storage_field_storage_query() with 'count' option breaks on PostgreSQL and SQLite , awaiting review. I've also added a handbook page at http://drupal.org/node/706264 describing the problem here which has also occured in other code which blows up on Postgres.
A lot of the exceptions in Fields are due to an attempt to create a table which already exists. I'm not sure whether this is because it isn't being dropped when it should or whether there should be a check before creation.
Comment #2
sun.core commentedNot critical. Please read and understand Priority levels of Issues, thanks.
Comment #3
bellHead commentedPlease understand the implications of the test failures.
These are not testing failures, the underlying functions (at least for the ones I've looked at) are also failing. This means that, for instance, fields cannot be added to node types, comments fail to display, and some node save operations fail. Which is the very definition of critical.
Postgres is a supported database, the fact that these functions work on more permissive MySQL doesn't make their failure on Postgres any less critical.
Comment #4
josh waihi commentedDrupal 7 will release when there are no critical issues. Drupal 7 will not release until PostgreSQL support is 100% because it is a supported database and deserves it. To introduce a database to core and only semi-support it is frankly stupid. Therefore PostgreSQL failures are critical issues.
Comment #5
damien tournoud commentedAgreed on the critical level.
Comment #6
damien tournoud commentedHere is a full test log from this morning. There is a few fatal errors that needs to be investigated.
Comment #7
josh waihi commented@Damian how are you getting it to run so fast? super computer?
Comment #8
damien tournoud commentedHere are the remaining test failures this morning.
@Josh: I'm running PostgreSQL data directory on a tmpfs mount. It helps a lot.
Comment #9
damien tournoud commentedThe comment failures are due to #314349: PDO Exception when having too much comments.
The schema failures are due to #715906: Schema tests fail on PostgreSQL.
The session HTTPS handling failures are due to #715108: Make Merge queries more consistent and robust.
All the others are field failures!
Comment #10
damien tournoud commentedBy the way, I'm seeing exactly the same field failures on SQLite:
(with the addition of the Field UI tests that pass on PostgreSQL)
Comment #11
damien tournoud commentedAs of this morning:
We are getting there, slowly.
Comment #12
andypostList field and File field validation tests caused by #718016: DatabaseSchema_pgsql::renameTable() needs to rename the indexes
EDIT: all first three cases caused by exception when field_create_field() called for field which was deleted
Comment #13
andypost'File field validation tests' is broken because table-name is truncated to 64 chars which causes duplicate
produces tablename longer then 64 chars so it truncated
Comment #14
andypostI file an issue #718254: Fieldname in tests are too long to change fieldname used in test
Comment #15
damien tournoud commentedWith #718016: DatabaseSchema_pgsql::renameTable() needs to rename the indexes applied:
Comment #16
damien tournoud commentedThis is not critical anymore.
Comment #17
josh waihi commentedw00t!
Comment #18
andypostanother bug #720620: indexExists() for pgsql and sqlite does not prefix tablename
Comment #19
andypostfinally commited #718254: Fieldname in tests are too long
so only one test is broken - sessions #715108: Make Merge queries more consistent and robust
Comment #20
andypostgrouping #727548: administration screen broken under pgsql - non-aggregated fields must be present in the GROUP BY clause
Also comments tests (anonymous comment, commrnt preview) throws exception but I cant reproduce on live site...
Issue to solve #671520: Curl and fragment URLs break testing
Comment #21
bendiy commentedI think my issue in Views is related this this one:
Comment #22
josh waihi commented#669794: Use savepoints for nested transactions is now in. We can fix up #715108: Make Merge queries more consistent and robust
Comment #23
andypostAnother one waiting for final review #761976: DatabaseSchema_pgsql::changeField() is broken
Comment #24
josh waihi commentedRemaining Failures:
Comment #25
josh waihi commentedSee patch for forum tests: #831070: PostgreSQL breaks on forums with IF() syntax.
Comment #26
bendiy commentedWith Drupal 7 RC1 approaching, what is the status of this issue. It appears that the issues listed here are closed, but this probably needs one last look and then closed if everything is complete.
Comment #27
Stevel commentedI've started a test suite run with the patch in #30 of http://drupal.org/node/926636
Environment:
Ubuntu 10.10
PostgreSQL 9.0.1
PHP 5.3.3
Apache 2.2.16
Comment #28
Stevel commentedThere are 11 tests currently not working on PostgreSQL:
Basic Upgrade Path
Comment Upgrade Path
Filter administration functionality
Filter format upgrade path
Element processing
Locale upgrade path
Node body upgrade path
Poll upgrade path
RDF comment mapping
Taxonomy upgrade path
Upload upgrade path
Comment #29
Stevel commentedWith the following patches applied the following tests remain broken:
#926636: Drupal install error on PostgreSQL 9.0 database
#974250: Upgrade path broken on PostgreSQL: can't change NOT NULL
- Filter administration functionality
- Filter format upgrade path
- Element Processing
- Node body upgrade path
- RDF comment mapping
- Taxonomy upgrade path
Most of the upgrade path issues are a consequence of #951116: db_change_field() fails to convert int to varchar on PostgreSQL
Comment #30
Stevel commentedAllright, so all of the upgrade path issues are a consequence of last mentioned issue.
This lists the issues with the tests they fix:
#926636: Drupal install error on PostgreSQL 9.0 database
#974250: Upgrade path broken on PostgreSQL: can't change NOT NULL
Basic Upgrade PathComment Upgrade PathLocale upgrade pathPoll upgrade pathUpload upgrade path#951116: db_change_field() fails to convert int to varchar on PostgreSQL
Filter format upgrade pathNode body upgrade pathTaxonomy upgrade path#977596: Text format loses weight and status when saving settings
Filter administration functionality#977184: FormElementTestCase::testOptions() should fail, doesn't
Element processing#933856: xpath() return values are inconsistent
RDF comment mappingUpdate: A full test suite run confirmes no regressions in other tests because of these patches :)
Comment #31
bendiy commentedGreat work Stevel!
Thanks for looking into this and submitting all those patches. Drupal 7 will be better because of you!
Comment #32
grobe commentedDid the patches presented here get integrated into the current rc2 release?
Cheers, Lars.
Comment #33
damien tournoud commentedCurrent state:
The tests are now automatically run every day by http://drupal-ci.c--g.net/.
Comment #34
josh waihi commentedComment #35
steven jones commentedThis is a broken test, over here: #1001242: DBTNG support for EXISTS conditions
Seems to be caused by the exception in
Comment fieldsSeems to be because PostgreSQL has a different logic to determining which rows count as having been updated to MySQL, does anyone know where there is an issue for this?
Comment #36
steven jones commentedDiffering row counts:
#805858: Affected rows inconsistent across database engines
Comment #37
steven jones commentedComment #38
steven jones commentedIn summary,
#1008128: Do not use a single underscore as table and index separator on PostgreSQL and SQLite / #998898: Make sure that the identifiers are not more the 63 characters on PostgreSQL Will fix:
#805858: Affected rows inconsistent across database engines Will fix:
#1008128: Do not use a single underscore as table and index separator on PostgreSQL and SQLite / #998898: Make sure that the identifiers are not more the 63 characters on PostgreSQL Will fix:
So just three issues until all tests pass!
Comment #39
josh waihi commentedyay! (hands in the air)
Comment #40
dave reid#1003788: PostgreSQL: PDOException:Invalid text representation when attempting to load an entity with a string or non-scalar ID is not a fun bug at all.
Comment #41
claar commentedsub
Comment #42
sunMeta issues must not be more severe than normal.
Comment #43
Anonymous (not verified) commentedI'm guessing that this was resolved, but can someone test to see whether this is still an issue?
Comment #44
steven jones commented@linclark I'm fairly certain that as the referenced issues have not been resolved then this issue is still an issue.
I will re-test and let everyone know the results!
Comment #45
steven jones commentedI've finally got around to testing PostgreSQL, and there are some failures, I've uploaded my jUnit results to a sandbox: http://drupal.org/sandbox/darthsteven/1811796 Most of them are in the upgrade path, it seems like Simpletest can create a simpletest environment within a simpletest environment on PostgreSQL.
I'll keep plugging away at things and try to clean up my Vagrant environment so I can share the test rig.
Comment #46
stefan.r commentedComment #47
liam morlandCore testing on Postgres needs to be enabled. Currently, only MySQL and SQLite are tested.
Comment #48
poker10 commentedThis issue should be also fixed for D7 in order to make PostgreSQL tests work.
Comment #49
mcdruid commentedCombined patches from #998898-95: Make sure that the identifiers are not more the 63 characters on PostgreSQL and #3262341-16: [D7] Database test table TEST_UPPERCASE causes PostgreSQL tests to fail to see if those two are enough to get tests running again in PostgreSQL.
Setting to NR just for the bot, we won't be committing a patch in this meta issue.
Comment #50
mcdruid commentedGood to see the test actually running all the way through.
12 failures doesn't seem too bad :)
We'll get the two issues stopping tests from running committed first then look at the remaining fails.
Comment #51
liam morlandNo-op patch to run tests.
Comment #52
mcdruid commented@Liam Morland you beat me to it, thanks :)
Comment #53
poker10 commentedFilled the first issue to fix remaining PostgreSQL failures: #3264314: [D7] DatabaseReservedKeywordTestCase and DatabaseTablePrefixTestCase using wrong Fully qualified table name in PostgreSQL
This one seems to be caused only by new tests introduced a year ago.
Comment #54
poker10 commentedAdding another two issues where only tests are the problem (no core changes needed). I have added patches already:
#3264345: [D7] PollCreateTestCase - invalid input syntax for integer on PostgreSQL
#3264353: [D7] NodeCreationTestCase fails on PostgreSQL
Comment #55
mcdruid commentedAnother noop to see what condition our condition is in.
Comment #56
mcdruid commentedAs @poker10 mentioned in #3264314: [D7] DatabaseReservedKeywordTestCase and DatabaseTablePrefixTestCase using wrong Fully qualified table name in PostgreSQL some of the test results seem a bit inconsistent, but I think we can keep working our way through them for now.
Similar technique to what we did in #3081386: [META] Fully support PHP 7.4 in Drupal 7 to try and organise the noisy results a bit:
Comment #57
mcdruid commentedAnother child issue for what looks like backport of changes to the test only: #3264471: DatabaseUpdateTestCase::testExpressionUpdate assertion on number of affected rows fails in PostgreSQL
Comment #58
poker10 commentedAdded issue for file.test failures - #3264750: [D7] FileFieldWidgetTestCase::testMultiValuedWidget missing upload form causes fails on PostgreSQL
Comment #59
poker10 commentedAnother one which should be easy to fix (without touching the core): #3264826: [D7] FieldInfoTestCase::testFieldMap array order causes test fail on PostgreSQL
I have added the patch.
Comment #60
poker10 commentedNext two issues only tests related - patches are attached (without changes to the core).
#3264845: [D7] AggregatorUpdatePathTestCase::testAggregatorUpdate - inconsistent array order causing test to fail on PostgreSQL
#3264866: [D7] BasicMinimalUpdatePath::testBasicMinimalUpdate is checking wrong key name on PostgreSQL
Comment #61
mcdruid commentedCombined patch of:
The test failures that remain seem to be pretty inconsistent. Let's try a couple of runs.
Comment #62
mcdruid commentedAdding 3265522-2.patch to skip the Upgrade (i.e. D6 -> D7) tests as they've been failing inconsistently with PostgreSQL and are arguably not so relevant 10 years on.
Comment #63
poker10 commentedThe test union fail in PHP 8.1 is another ORDER BY issue :) I will create a issue with patch for that.
It is very nice to see that otherwise all test should be passing after these patches.
Comment #64
poker10 commentedHere is the issue with a patch for the last PHP 8.1 test failure on PostgreSQL: #3265579: [D7] DatabaseSelectTestCase::testUnion - inconsistent array order causing test failure on PostgreSQL
Comment #65
mcdruid commentednoop patch - I believe all the fixes are committed and core should now pass PostgreSQL tests with any luck.
Comment #66
mcdruid commentedI think we can finally call this one Fixed!
Thank you everybody that contributed.
Comment #68
izmeez commentedWe don't use PostgreSQL but watching you guys taking care of these has been amazing!