- Notifications
You must be signed in to change notification settings - Fork904
UseBufferedInputStream
withFileInputStream
#3750
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
Some places where `FileInputStream` was being used didn't have`BufferedInputStream`. In many of the use cases, these files were beingread 1 byte at a time. This causes excessive IO calls to read the file.By ensuring the `InputStream` is buffered, the IO calls are minimised,improving the performance of the driver.
vlsi commentedAug 5, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
For reference, it looks like See:
At the same time, |
Interesting. Thanks for the PR |
I've an idea how we could prevent similar issues in the future:
Then the build would prevent WDYT? |
@jgardn3r , would you be open to update the PR as per#3750 (comment) ? |
Happy to make the changes. A few things that I have thought while implementing these changes:
What do you guys think? |
Well,
Let's replace it indeed.
AFAIK there are two instances, and they are worth updating:
It is fine to convert to a new util method. It looks like a true case when the necessary buffering was missing.
It could rather be |
For reference, I've filedopenrewrite/rewrite-static-analysis#694 so openrewrite could automatically replace |
34a3416
intopgjdbc:masterUh oh!
There was an error while loading.Please reload this page.
| Package | Type | Package file | Manager | Update | Change ||---|---|---|---|---|---|| [org.postgresql:postgresql](https://jdbc.postgresql.org)([source](https://github.com/pgjdbc/pgjdbc)) | dependencies |misk/gradle/libs.versions.toml | gradle | patch | `42.7.7` -> `42.7.8` ||[com.google.apis:google-api-services-cloudkms](http://nexus.sonatype.org/oss-repository-hosting.html)([source](http://svn.sonatype.org/spice/tags/oss-parent-7)) |dependencies | misk/gradle/libs.versions.toml | gradle | patch |`v1-rev20250818-2.0.0` -> `v1-rev20250911-2.0.0` ||[org.assertj:assertj-core](https://assertj.github.io/doc/#assertj-core)([source](https://github.com/assertj/assertj)) | dependencies |misk/gradle/libs.versions.toml | gradle | patch | `3.27.4` -> `3.27.5` || [software.amazon.awssdk:sdk-core](https://aws.amazon.com/sdkforjava) |dependencies | misk/gradle/libs.versions.toml | gradle | patch |`2.33.12` -> `2.33.13` || [software.amazon.awssdk:sqs](https://aws.amazon.com/sdkforjava) |dependencies | misk/gradle/libs.versions.toml | gradle | patch |`2.33.12` -> `2.33.13` || [software.amazon.awssdk:s3](https://aws.amazon.com/sdkforjava) |dependencies | misk/gradle/libs.versions.toml | gradle | patch |`2.33.12` -> `2.33.13` || [software.amazon.awssdk:regions](https://aws.amazon.com/sdkforjava) |dependencies | misk/gradle/libs.versions.toml | gradle | patch |`2.33.12` -> `2.33.13` ||[software.amazon.awssdk:dynamodb-enhanced](https://aws.amazon.com/sdkforjava)| dependencies | misk/gradle/libs.versions.toml | gradle | patch |`2.33.12` -> `2.33.13` || [software.amazon.awssdk:dynamodb](https://aws.amazon.com/sdkforjava) |dependencies | misk/gradle/libs.versions.toml | gradle | patch |`2.33.12` -> `2.33.13` || [software.amazon.awssdk:aws-core](https://aws.amazon.com/sdkforjava) |dependencies | misk/gradle/libs.versions.toml | gradle | patch |`2.33.12` -> `2.33.13` || [software.amazon.awssdk:bom](https://aws.amazon.com/sdkforjava) |dependencies | misk/gradle/libs.versions.toml | gradle | patch |`2.33.12` -> `2.33.13` || [software.amazon.awssdk:auth](https://aws.amazon.com/sdkforjava) |dependencies | misk/gradle/libs.versions.toml | gradle | patch |`2.33.12` -> `2.33.13` |---### Release Notes<details><summary>pgjdbc/pgjdbc (org.postgresql:postgresql)</summary>###[`v42.7.8`](https://github.com/pgjdbc/pgjdbc/blob/HEAD/CHANGELOG.md#4278-2025-09-18)##### Added- feat: Add configurable boolean-to-numeric conversion for ResultSetgetters [PR #​3796](pgjdbc/pgjdbc#3796)##### Changed- perf: remove QUERY\_ONESHOT flag when calling getMetaData [PR#​3783](pgjdbc/pgjdbc#3783)- perf: use `BufferedInputStream` with `FileInputStream` [PR#​3750](pgjdbc/pgjdbc#3750)- perf: enable server-prepared statements for DatabaseMetaData##### Fixed- fix: avoid NullPointerException when cancelling a query if cancel keyis not known yet- fix: Change "PST" timezone in TimestampTest to "Pacific Standard Time"[PR #​3774](pgjdbc/pgjdbc#3774)- fix: traverse the current dimension to get the correct pos inPgArray#calcRemainingDataLength [PR#​3746](pgjdbc/pgjdbc#3746)- fix: make sure getImportedExportedKeys returns columns in consistentorder- fix: Add "SELF\_REFERENCING\_COL\_NAME" field to getTables'ResultSetMetaData to fix NullPointerException [PR#​3660](pgjdbc/pgjdbc#3660)- fix: unable to open replication connection to servers < 12- fix: avoid closing statement caused by driver's internalResultSet#close()- fix: return empty metadata for empty catalog names as it was before- fix: Incorrect class comparison in PGXmlFactoryFactory validation</details>---### Configuration📅 **Schedule**: Branch creation - "after 6pm every weekday,before 2amevery weekday" in timezone Australia/Melbourne, Automerge - At any time(no schedule defined).🚦 **Automerge**: Enabled.♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.👻 **Immortal**: This PR will be recreated if closed unmerged. Get[config help](https://github.com/renovatebot/renovate/discussions) ifthat's undesired.---- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, checkthis box---This PR has been generated by [RenovateBot](https://github.com/renovatebot/renovate).GitOrigin-RevId: 60823b502aee625ad34c64abe2d25a884fd81fee
Some places where
FileInputStream
was being used didn't haveBufferedInputStream
. In many of the use cases, these files were being read 1 byte at a time. This causes excessive IO calls to read the file. By ensuring theInputStream
is buffered, the IO calls are minimised, improving the performance of the driver.This performance issue was noticed when a certificate file was on a network drive. It resulted in considerable network traffic.
All Submissions: