Fix PostgreSQL DATETIME serialization to use ISO 8601 format#3245
Fix PostgreSQL DATETIME serialization to use ISO 8601 format#3245
Conversation
Summary of ChangesHello @robfrank, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request enhances the PostgreSQL compatibility layer by addressing critical issues related to datetime serialization and command parsing. It standardizes datetime output to a widely accepted ISO 8601 format, resolving client-side parsing failures, and makes the Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
🧪 CI InsightsHere's what we observed from your CI run for ec83ddc. 🟢 All jobs passed!But CI Insights is watching 👀 |
There was a problem hiding this comment.
Code Review
This pull request effectively addresses the issues related to PostgreSQL DATETIME serialization and introduces case-insensitive parsing for SET commands. The addition of dedicated tests for these fixes is highly commendable, ensuring the new functionality works as expected. However, there are a couple of areas that could be improved for robustness and consistency.
postgresw/src/main/java/com/arcadedb/postgres/PostgresType.java
Outdated
Show resolved
Hide resolved
postgresw/src/main/java/com/arcadedb/postgres/PostgresNetworkExecutor.java
Outdated
Show resolved
Hide resolved
Code Review: PostgreSQL DATETIME Serialization FixThank you for addressing issue #1605! This PR makes important improvements to the PostgreSQL wire protocol compatibility. Here's my detailed review: ✅ Strengths1. Solves the Core Problem
2. Good Test Coverage
3. Consistent Implementation
🔍 Issues & RecommendationsCritical: Timezone HandlingThe current implementation always uses UTC ( LocalDateTime ldt = LocalDateTime.ofInstant(date.toInstant(), ZoneOffset.UTC);Concerns:
Recommendation:
Minor: Format PatternThe format
This is probably fine (PostgreSQL accepts it), but consider:
Code Quality Issues1. In PostgresNetworkExecutor.java:897-900final String upperQuery = query.toUpperCase(Locale.ENGLISH);
final int setLength = "SET ".length();
final String q = query.substring(setLength);Issue: Suggestion: Add a comment explaining why we need both the uppercase check and original case preservation for parsing. 2. In PostgresNetworkExecutor.java:902parts = q.split("(?i)\\s+TO\\s+");Issue: Uses regex with case-insensitive flag, which is good, but inconsistent with the Suggestion: For consistency and performance, consider using 3. Error HandlingThe added validation (lines 904-907) is good: if (parts.length < 2) {
LogManager.instance().log(this, Level.WARNING, "Invalid SET command format: %s", query);
return;
}But it only logs - the client still receives "Setting ignored" response. Consider whether this should send an error response to the client instead. Testing Gaps
🔒 Security Considerations✅ No security concerns identified:
⚡ Performance ConsiderationsMinor impact:
📝 Documentation & StyleFollows project standards:
Missing:
🎯 Recommendations SummaryBefore merging:
Nice to have: ✅ Final AssessmentThis is a solid fix that addresses a real compatibility issue. The core implementation is correct and will resolve the problem for Node.js users. With minor refinements around timezone handling and test coverage, this will be production-ready. Recommended action: Address the timezone handling clarification, then merge. Review conducted following CLAUDE.md guidelines |
Code Review for PR #3245Thank you for addressing issue #1605! This PR makes important improvements to PostgreSQL protocol compatibility. Here's my detailed review: ✅ Strengths
🔍 Issues & Concerns1. CRITICAL: Incorrect DateTimeFormatter PatternLocation: private static final String POSTGRES_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss.SSSSSS";Problem: The pattern uses
This will produce incorrect values. For actual microsecond precision, you need: private static final String POSTGRES_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss.SSSSSS";
// But use: LocalDateTime with nanosecond precision
// Or simply: "yyyy-MM-dd HH:mm:ss.SSS" for millisecondsNote: Recommendation:
2. Timezone Handling IssueLocation: LocalDateTime ldt = LocalDateTime.ofInstant(date.toInstant(), ZoneOffset.UTC);Problem: The code hardcodes
Consideration: Check if this aligns with PostgreSQL's behavior. PostgreSQL TIMESTAMP (without time zone) stores values without timezone info, while TIMESTAMP WITH TIME ZONE stores UTC and converts on output. Recommendation: Verify that hardcoding UTC is the intended behavior. Consider checking 3. Potential Bug in setConfiguration MethodLocation: final String q = upperQuery.substring(setLength);Problem: After converting the entire query to uppercase, you extract the parameter name and value from
Impact: This could break applications that rely on case-sensitive configuration values. Fix: Extract parameter and value from the original final String upperQuery = query.toUpperCase(Locale.ENGLISH);
final int setLength = "SET ".length();
final String q = query.substring(setLength); // Use original query here!
String[] parts = q.split("=");
if (parts.length < 2) {
parts = q.split("(?i)\\s+TO\\s+"); // Regex is already case-insensitive
}4. Test Coverage GapsMissing test scenarios:
5. Code Style: Missing Locale in String OperationsLocation: if (query.query.toUpperCase(Locale.ENGLISH).startsWith("SET ")) {Good: You properly used 🎯 RecommendationsHigh Priority
Medium Priority
Low Priority
📋 Checklist ReviewFrom the PR description:
🎓 Architectural AlignmentPer CLAUDE.md guidelines:
SummaryThis PR makes important progress on fixing the datetime serialization issue, but has a critical bug in the DateTimeFormatter pattern that needs immediate attention. The case-preservation bug in Please address these issues and I'll be happy to review again! Great work on improving PostgreSQL compatibility. 🚀 |
Code Review for PR #3245Thank you for addressing issue #1605! This PR fixes a critical compatibility issue with the PostgreSQL wire protocol that was causing datetime fields to return null in node-postgres. Strengths
Critical Issue to FixValue Case Preservation Bug (PostgresNetworkExecutor.java:891-896): The current implementation converts the entire query to uppercase, including values. This means SET application_name = 'MyApp' would store as 'MYAPP' (incorrectly uppercased). Impact: Values that are case-sensitive will be corrupted. Fix: Only uppercase for comparison, preserve original case for values by keeping query.substring(setLength) without toUpperCase(), then only lowercase the parameter name. Suggestions
SummaryExcellent fix for a critical issue! After correcting the value uppercasing bug, this will be ready to merge. The datetime format fix is spot-on and will resolve the node-postgres compatibility problem. Great work! |
|
@claude implement fixes suggested in #3245 (comment) |
|
Claude finished @robfrank's task in 2m 27s —— View job Implementing fixes from code review ✓Tasks
Changes Made1. Fixed Case Preservation BugFile: Changed from: final String q = upperQuery.substring(setLength);To: // Use original query to preserve case of values
final String q = query.substring(setLength);This ensures that values like 2. Added Test for Case-Sensitive ValuesTest: Verifies that the SET command preserves the original case of values (e.g., 3. Added Test for Datetime ArraysTest: Verifies that datetime values in arrays are properly serialized and can be retrieved without errors. SummarySuccessfully implemented all fixes suggested in the code review:
The changes are minimal and focused, addressing exactly what was identified in the review. The fix preserves the original behavior for case-insensitive parameter name matching while correctly preserving the case of values. Commit: 6793329 --- | |
- Fix case preservation bug in setConfiguration method where values were being uppercased - Add test for case-sensitive SET command values (setCommandPreservesCaseOfValues) - Add test for datetime array serialization (dateTimeArraySerialization) Addresses code review feedback from #3245 (comment) Co-authored-by: Roberto Franchini <robfrank@users.noreply.github.com>
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferences |
|
|
||
| final ResultSet resultSet; | ||
| if (query.query.startsWith("SET ")) { | ||
| if (query.query.toUpperCase(Locale.ENGLISH).startsWith("SET ")) { |
There was a problem hiding this comment.
Why is not using upper case anymore?
There was a problem hiding this comment.
all the if should use the uppercase to check the command and the pass the original query to executor.
Scenario:
- command:
SeT .... - check if
SETis present on original query: false - check if
SETis present on uppercase query: true
postgresw/src/main/java/com/arcadedb/postgres/PostgresNetworkExecutor.java
Outdated
Show resolved
Hide resolved
|
Approved, please @robfrank check my comments if make any sense. |
- Use PostgreSQL-compatible datetime format (yyyy-MM-dd HH:mm:ss.SSSSSS) instead of java.util.Date.toString() format - Make SET command parsing case-insensitive for better compatibility - Add tests to verify datetime serialization and case-insensitive SET commands This fixes issue #1605 where datetime fields returned null in node-postgres library due to unparseable date format strings. Co-authored-by: Roberto Franchini <robfrank@users.noreply.github.com>
…xecutor.java Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
- Fix case preservation bug in setConfiguration method where values were being uppercased - Add test for case-sensitive SET command values (setCommandPreservesCaseOfValues) - Add test for datetime array serialization (dateTimeArraySerialization) Addresses code review feedback from #3245 (comment) Co-authored-by: Roberto Franchini <robfrank@users.noreply.github.com>
6793329 to
ec83ddc
Compare
Pull Request Review: Fix PostgreSQL DATETIME serialization to use ISO 8601 formatThank you for addressing issue #1605! This PR makes important improvements to PostgreSQL protocol compatibility. Here's my detailed review: ✅ Positive Aspects1. Excellent Problem Identification
2. Comprehensive Test Coverage
3. Good Case-Insensitivity Handling
🔍 Issues & ConcernsCritical: Date Format InconsistencyProblem: The PR introduces a different datetime format than what exists in the codebase.
Issue: When a client sets Recommendation:
Medium: Timezone HandlingIssue: The PR hardcodes LocalDateTime ldt = LocalDateTime.ofInstant(date.toInstant(), ZoneOffset.UTC);Concerns:
Recommendation:
Medium: Unused DateUtils ImportIssue: PostgresType.java imports DateUtils (line 27) but doesn't use any of its constants. Instead, it defines its own format locally. Recommendation: Either use DateUtils constants or remove the import. Low: Magic String "opencypher"Code (PostgresNetworkExecutor.java:482): if (portal.language.equals("cypher") || portal.language.equals("opencypher")) {Issue: This appears to be an unrelated change that adds support for "opencypher" language. While potentially useful, it's not mentioned in the PR description and seems out of scope. Recommendation:
Low: Array Format VerificationIssue: The test Recommendation: // Verify dates are formatted correctly
assertThat(dates[0].toString()).matches("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{6}");🔒 Security Considerations✅ No security issues identified:
⚡ Performance Considerations✅ Performance impact is minimal:
Minor suggestion: The regex split in setConfiguration (line 1081) is compiled each time. For a hot path, consider: private static final Pattern TO_PATTERN = Pattern.compile("(?i)\\s+TO\\s+");
// Then use: parts = TO_PATTERN.split(q);📋 Recommendations SummaryMust Fix:
Should Fix:
Nice to Have:
✅ Checklist ReviewPer CLAUDE.md requirements:
🎯 Overall AssessmentThis PR makes significant progress on fixing issue #1605. The core fix is sound, and the test coverage is good. However, the date format inconsistency between DateUtils and PostgresType needs to be resolved before merging to ensure predictable behavior across the PostgreSQL protocol implementation. Recommendation: Request changes to address the date format consistency issue, then approve once resolved. |
…from 3.5.4 to 3.5.5 [skip ci] Bumps [org.apache.maven.plugins:maven-failsafe-plugin](https://github.com/apache/maven-surefire) from 3.5.4 to 3.5.5. Release notes *Sourced from [org.apache.maven.plugins:maven-failsafe-plugin's releases](https://github.com/apache/maven-surefire/releases).* > 3.5.5 > ----- > > 🚀 New features and improvements > ------------------------------- > > * Replace runing external process and parsing output with simple ProcessHandle if available (Java9+) ([#3252](https://redirect.github.com/apache/maven-surefire/pull/3252)) [`@olamy`](https://github.com/olamy) > * Pass slf4j context to spawned thread ([#3241](https://redirect.github.com/apache/maven-surefire/pull/3241)) [`@scottrw93`](https://github.com/scottrw93) > * [[SUREFIRE-3239]](https://issues.apache.org/jira/browse/SUREFIRE-3239) - allow override of statistics file checksum ([#3247](https://redirect.github.com/apache/maven-surefire/pull/3247)) [`@XN137`](https://github.com/XN137) > * Reduce log level for skipped tests result to info ([#3232](https://redirect.github.com/apache/maven-surefire/pull/3232)) [`@strangelookingnerd`](https://github.com/strangelookingnerd) > > 🐛 Bug Fixes > ----------- > > * Use PowerShell instead of WMIC for detecting zombie process on Windows ([#3258](https://redirect.github.com/apache/maven-surefire/pull/3258)) [`@jbliznak`](https://github.com/jbliznak). Please note if you are using Windows with Java 8 and not PowerShell (you have options to: use Java 9+, install PowerShell or stay on Surefire 3.5.4) > * Properly work with test failures caused during beforeAll phase ([#3194](https://redirect.github.com/apache/maven-surefire/pull/3194)) [`@Frawless`](https://github.com/Frawless) > > 📝 Documentation updates > ----------------------- > > * Clarify how late placeholder replacement (@{...}) deals with ([#3208](https://redirect.github.com/apache/maven-surefire/pull/3208)) [`@kwin`](https://github.com/kwin) > > 👻 Maintenance > ------------- > > * Fix Jenkin badges in README ([#3254](https://redirect.github.com/apache/maven-surefire/pull/3254)) [`@slawekjaranowski`](https://github.com/slawekjaranowski) > * Use JUnit5 in failsafe ITs ([#3251](https://redirect.github.com/apache/maven-surefire/pull/3251)) [`@slawekjaranowski`](https://github.com/slawekjaranowski) > * Remove long-deprecated unused encoding property from VerifyMojo ([#3198](https://redirect.github.com/apache/maven-surefire/pull/3198)) [`@Tomlincoln`](https://github.com/Tomlincoln) > * Add IT and deal with corner cases of handling beforeAll failures ([#3200](https://redirect.github.com/apache/maven-surefire/pull/3200)) [`@Frawless`](https://github.com/Frawless) > * Revert PR [#3194](https://redirect.github.com/apache/maven-surefire/issues/3194) that handle beforeAll failures to follow proper contributing rules ([#3211](https://redirect.github.com/apache/maven-surefire/pull/3211)) [`@Frawless`](https://github.com/Frawless) > > 🔧 Build > ------- > > * Missing many files in the GH Artifacts of CI ex-post. ([#3219](https://redirect.github.com/apache/maven-surefire/pull/3219)) [`@Tibor17`](https://github.com/Tibor17) > > 📦 Dependency updates > -------------------- > > * Bump org.xmlunit:xmlunit-core from 2.10.4 to 2.11.0 ([#3209](https://redirect.github.com/apache/maven-surefire/pull/3209)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness from 3.4.0 to 3.5.1 ([#3260](https://redirect.github.com/apache/maven-surefire/pull/3260)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump parent from 44 to 47 ([#3253](https://redirect.github.com/apache/maven-surefire/pull/3253)) [`@slawekjaranowski`](https://github.com/slawekjaranowski) > * Bump org.assertj:assertj-core from 3.16.1 to 3.27.7 in /surefire-its/src/test/resources/surefire-1733-testng ([#3246](https://redirect.github.com/apache/maven-surefire/pull/3246)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.assertj:assertj-core from 3.27.6 to 3.27.7 ([#3245](https://redirect.github.com/apache/maven-surefire/pull/3245)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.mojo:animal-sniffer-maven-plugin from 1.26 to 1.27 ([#3243](https://redirect.github.com/apache/maven-surefire/pull/3243)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.20.0 to 4.21.0 ([#3236](https://redirect.github.com/apache/maven-surefire/pull/3236)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-java from 1.5.1 to 1.5.2 ([#3235](https://redirect.github.com/apache/maven-surefire/pull/3235)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.logging.log4j:log4j-core from 2.17.1 to 2.25.3 in /surefire-its/src/test/resources/surefire-1659-stream-corruption ([#3234](https://redirect.github.com/apache/maven-surefire/pull/3234)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.19.0 to 4.20.0 ([#3228](https://redirect.github.com/apache/maven-surefire/pull/3228)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.18.0 to 4.19.0 ([#3224](https://redirect.github.com/apache/maven-surefire/pull/3224)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.commons:commons-lang3 from 3.19.0 to 3.20.0 ([#3223](https://redirect.github.com/apache/maven-surefire/pull/3223)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-interpolation from 1.28 to 1.29 ([#3221](https://redirect.github.com/apache/maven-surefire/pull/3221)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-i18n from 1.0.0 to 1.1.0 ([#3220](https://redirect.github.com/apache/maven-surefire/pull/3220)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump commons-io:commons-io from 2.20.0 to 2.21.0 ([#3217](https://redirect.github.com/apache/maven-surefire/pull/3217)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness from 3.3.0 to 3.4.0 ([#3214](https://redirect.github.com/apache/maven-surefire/pull/3214)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-java from 1.5.0 to 1.5.1 ([#3218](https://redirect.github.com/apache/maven-surefire/pull/3218)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.16.0 to 4.18.0 ([#3213](https://redirect.github.com/apache/maven-surefire/pull/3213)) @[dependabot[bot]](https://github.com/apps/dependabot) ... (truncated) Commits * [`968cb38`](apache/maven-surefire@968cb38) [maven-release-plugin] prepare release surefire-3.5.5 * [`8e7dc41`](apache/maven-surefire@8e7dc41) Reapply "Replace runing external process and parsing output with simple Proce... * [`4ced57c`](apache/maven-surefire@4ced57c) Revert "Replace runing external process and parsing output with simple Proces…" * [`8496d9a`](apache/maven-surefire@8496d9a) Bump org.xmlunit:xmlunit-core from 2.10.4 to 2.11.0 ([#3209](https://redirect.github.com/apache/maven-surefire/issues/3209)) * [`68265e5`](apache/maven-surefire@68265e5) Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness ([#3260](https://redirect.github.com/apache/maven-surefire/issues/3260)) * [`0b19014`](apache/maven-surefire@0b19014) Replace runing external process and parsing output with simple ProcessHandle ... * [`688f8c4`](apache/maven-surefire@688f8c4) Use PowerShell instead of WMIC for detecting zombie process on Windows ([#3258](https://redirect.github.com/apache/maven-surefire/issues/3258)) * [`e5c01a6`](apache/maven-surefire@e5c01a6) Build only by the latest Maven on Jenkins ([#3255](https://redirect.github.com/apache/maven-surefire/issues/3255)) * [`9c99e97`](apache/maven-surefire@9c99e97) Fix Jenkin badges in README ([#3254](https://redirect.github.com/apache/maven-surefire/issues/3254)) * [`20930ea`](apache/maven-surefire@20930ea) Bump parent from 44 to 47 ([#3253](https://redirect.github.com/apache/maven-surefire/issues/3253)) * Additional commits viewable in [compare view](apache/maven-surefire@surefire-3.5.4...surefire-3.5.5) [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- Dependabot commands and options You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
…from 3.5.4 to 3.5.5 [skip ci] Bumps [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) from 3.5.4 to 3.5.5. Release notes *Sourced from [org.apache.maven.plugins:maven-surefire-plugin's releases](https://github.com/apache/maven-surefire/releases).* > 3.5.5 > ----- > > 🚀 New features and improvements > ------------------------------- > > * Replace runing external process and parsing output with simple ProcessHandle if available (Java9+) ([#3252](https://redirect.github.com/apache/maven-surefire/pull/3252)) [`@olamy`](https://github.com/olamy) > * Pass slf4j context to spawned thread ([#3241](https://redirect.github.com/apache/maven-surefire/pull/3241)) [`@scottrw93`](https://github.com/scottrw93) > * [[SUREFIRE-3239]](https://issues.apache.org/jira/browse/SUREFIRE-3239) - allow override of statistics file checksum ([#3247](https://redirect.github.com/apache/maven-surefire/pull/3247)) [`@XN137`](https://github.com/XN137) > * Reduce log level for skipped tests result to info ([#3232](https://redirect.github.com/apache/maven-surefire/pull/3232)) [`@strangelookingnerd`](https://github.com/strangelookingnerd) > > 🐛 Bug Fixes > ----------- > > * Use PowerShell instead of WMIC for detecting zombie process on Windows ([#3258](https://redirect.github.com/apache/maven-surefire/pull/3258)) [`@jbliznak`](https://github.com/jbliznak). Please note if you are using Windows with Java 8 and not PowerShell (you have options to: use Java 9+, install PowerShell or stay on Surefire 3.5.4) > * Properly work with test failures caused during beforeAll phase ([#3194](https://redirect.github.com/apache/maven-surefire/pull/3194)) [`@Frawless`](https://github.com/Frawless) > > 📝 Documentation updates > ----------------------- > > * Clarify how late placeholder replacement (@{...}) deals with ([#3208](https://redirect.github.com/apache/maven-surefire/pull/3208)) [`@kwin`](https://github.com/kwin) > > 👻 Maintenance > ------------- > > * Fix Jenkin badges in README ([#3254](https://redirect.github.com/apache/maven-surefire/pull/3254)) [`@slawekjaranowski`](https://github.com/slawekjaranowski) > * Use JUnit5 in failsafe ITs ([#3251](https://redirect.github.com/apache/maven-surefire/pull/3251)) [`@slawekjaranowski`](https://github.com/slawekjaranowski) > * Remove long-deprecated unused encoding property from VerifyMojo ([#3198](https://redirect.github.com/apache/maven-surefire/pull/3198)) [`@Tomlincoln`](https://github.com/Tomlincoln) > * Add IT and deal with corner cases of handling beforeAll failures ([#3200](https://redirect.github.com/apache/maven-surefire/pull/3200)) [`@Frawless`](https://github.com/Frawless) > * Revert PR [#3194](https://redirect.github.com/apache/maven-surefire/issues/3194) that handle beforeAll failures to follow proper contributing rules ([#3211](https://redirect.github.com/apache/maven-surefire/pull/3211)) [`@Frawless`](https://github.com/Frawless) > > 🔧 Build > ------- > > * Missing many files in the GH Artifacts of CI ex-post. ([#3219](https://redirect.github.com/apache/maven-surefire/pull/3219)) [`@Tibor17`](https://github.com/Tibor17) > > 📦 Dependency updates > -------------------- > > * Bump org.xmlunit:xmlunit-core from 2.10.4 to 2.11.0 ([#3209](https://redirect.github.com/apache/maven-surefire/pull/3209)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness from 3.4.0 to 3.5.1 ([#3260](https://redirect.github.com/apache/maven-surefire/pull/3260)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump parent from 44 to 47 ([#3253](https://redirect.github.com/apache/maven-surefire/pull/3253)) [`@slawekjaranowski`](https://github.com/slawekjaranowski) > * Bump org.assertj:assertj-core from 3.16.1 to 3.27.7 in /surefire-its/src/test/resources/surefire-1733-testng ([#3246](https://redirect.github.com/apache/maven-surefire/pull/3246)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.assertj:assertj-core from 3.27.6 to 3.27.7 ([#3245](https://redirect.github.com/apache/maven-surefire/pull/3245)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.mojo:animal-sniffer-maven-plugin from 1.26 to 1.27 ([#3243](https://redirect.github.com/apache/maven-surefire/pull/3243)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.20.0 to 4.21.0 ([#3236](https://redirect.github.com/apache/maven-surefire/pull/3236)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-java from 1.5.1 to 1.5.2 ([#3235](https://redirect.github.com/apache/maven-surefire/pull/3235)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.logging.log4j:log4j-core from 2.17.1 to 2.25.3 in /surefire-its/src/test/resources/surefire-1659-stream-corruption ([#3234](https://redirect.github.com/apache/maven-surefire/pull/3234)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.19.0 to 4.20.0 ([#3228](https://redirect.github.com/apache/maven-surefire/pull/3228)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.18.0 to 4.19.0 ([#3224](https://redirect.github.com/apache/maven-surefire/pull/3224)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.commons:commons-lang3 from 3.19.0 to 3.20.0 ([#3223](https://redirect.github.com/apache/maven-surefire/pull/3223)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-interpolation from 1.28 to 1.29 ([#3221](https://redirect.github.com/apache/maven-surefire/pull/3221)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-i18n from 1.0.0 to 1.1.0 ([#3220](https://redirect.github.com/apache/maven-surefire/pull/3220)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump commons-io:commons-io from 2.20.0 to 2.21.0 ([#3217](https://redirect.github.com/apache/maven-surefire/pull/3217)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness from 3.3.0 to 3.4.0 ([#3214](https://redirect.github.com/apache/maven-surefire/pull/3214)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.codehaus.plexus:plexus-java from 1.5.0 to 1.5.1 ([#3218](https://redirect.github.com/apache/maven-surefire/pull/3218)) @[dependabot[bot]](https://github.com/apps/dependabot) > * Bump org.htmlunit:htmlunit from 4.16.0 to 4.18.0 ([#3213](https://redirect.github.com/apache/maven-surefire/pull/3213)) @[dependabot[bot]](https://github.com/apps/dependabot) ... (truncated) Commits * [`968cb38`](apache/maven-surefire@968cb38) [maven-release-plugin] prepare release surefire-3.5.5 * [`8e7dc41`](apache/maven-surefire@8e7dc41) Reapply "Replace runing external process and parsing output with simple Proce... * [`4ced57c`](apache/maven-surefire@4ced57c) Revert "Replace runing external process and parsing output with simple Proces…" * [`8496d9a`](apache/maven-surefire@8496d9a) Bump org.xmlunit:xmlunit-core from 2.10.4 to 2.11.0 ([#3209](https://redirect.github.com/apache/maven-surefire/issues/3209)) * [`68265e5`](apache/maven-surefire@68265e5) Bump org.apache.maven.plugin-testing:maven-plugin-testing-harness ([#3260](https://redirect.github.com/apache/maven-surefire/issues/3260)) * [`0b19014`](apache/maven-surefire@0b19014) Replace runing external process and parsing output with simple ProcessHandle ... * [`688f8c4`](apache/maven-surefire@688f8c4) Use PowerShell instead of WMIC for detecting zombie process on Windows ([#3258](https://redirect.github.com/apache/maven-surefire/issues/3258)) * [`e5c01a6`](apache/maven-surefire@e5c01a6) Build only by the latest Maven on Jenkins ([#3255](https://redirect.github.com/apache/maven-surefire/issues/3255)) * [`9c99e97`](apache/maven-surefire@9c99e97) Fix Jenkin badges in README ([#3254](https://redirect.github.com/apache/maven-surefire/issues/3254)) * [`20930ea`](apache/maven-surefire@20930ea) Bump parent from 44 to 47 ([#3253](https://redirect.github.com/apache/maven-surefire/issues/3253)) * Additional commits viewable in [compare view](apache/maven-surefire@surefire-3.5.4...surefire-3.5.5) [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- Dependabot commands and options You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
This fixes issue #1605 where datetime fields returned null in node-postgres library due to unparseable date format strings.
What does this PR do?
A brief description of the change being made with this pull request.
Motivation
What inspired you to submit this pull request?
Related issues
A list of issues either fixed, containing architectural discussions, otherwise relevant
for this Pull Request.
Additional Notes
Anything else we should know when reviewing?
Checklist
mvn clean packagecommand