Skip to content
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Network Performance of PgDatabaseMetaData.getTypeInfo() method #1668

merged 5 commits into from Jan 29, 2020


Copy link

@dupski dupski commented Jan 9, 2020

This PR is our proposed fix for #1342

It adds a TypeInfoCache.cacheSQLTypes() method, which is called by PgDatabaseMetaData.getTypeInfo() to pre-populate the pgNameToSQLType cache, prior to calling TypeInfoCache.getSQLType() for each required type. It includes some refactoring so that we don't have to duplicate SQL and logic between cacheSQLTypes() and getSQLType().

We've added a new DatabaseMetaDataCacheTest test suite. As the driver classes are tightly-coupled, the simplest way we found to check whether the cache is used is to inspect the debug log in the tests - not ideal - open to better suggestions :)

All Submissions:

  • Have you followed the guidelines in our Contributing document?
  • Have you checked to ensure there aren't other open Pull Requests for the same update/change?

Changes to Existing Features:

  • Does this break existing behaviour? (No)
  • Have you added an explanation of what your changes do and why you'd like us to include them?
  • Have you written new tests for your core changes, as applicable?
  • Have you successfully run tests with your changes locally?

Copy link
Contributor Author

@dupski dupski commented Jan 9, 2020

Travis test failures appear to be with tests that pass locally and unrelated to the change we've made?
Test Failure

@@ -0,0 +1,84 @@
Copy link

@davecramer davecramer Jan 28, 2020

Choose a reason for hiding this comment

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

@davecramer davecramer merged commit beb354e into pgjdbc:master Jan 29, 2020
2 checks passed
Copy link
Contributor Author

@dupski dupski commented Jan 29, 2020

Awesome, cheers @davecramer ! I was going to look at those changes for you today, saved me a job :)

Copy link

@davecramer davecramer commented Jan 29, 2020

I want to release this week or soon so I wanted to fix it earlier

paplorinc added a commit to paplorinc/pgjdbc that referenced this issue Feb 10, 2020
* origin/master: (427 commits)
  refactor: make PSQLState enum consts for integrity constraint violations (pgjdbc#1699)
  [maven-release-plugin] prepare for next development iteration
  [maven-release-plugin] prepare release REL42.2.10
  pass gpg key through arguments
  add passphrase to release mvn task
  chore: update signing key
  Metadata queries improvment (pgjdbc#1694)
  WIP release notes for 42.2.10 (pgjdbc#1688)
  chore(deps): bump checkstyle from 8.28 to 8.29 in /pgjdbc (pgjdbc#1691)
  Cleanup PGProperty, sort values, and add some missing to docs (pgjdbc#1686)
  fix: Fixes issue pgjdbc#1592 where one thread is reading the copy and another thread closes the connection (pgjdbc#1594)
  Fixing LocalTime rounding (losing precision) (pgjdbc#1570)
  sync error message value with tested value (pgjdbc#1664)
  add DatabaseMetaDataCacheTest to test suite to run it (pgjdbc#1685)
  Fix Network Performance of PgDatabaseMetaData.getTypeInfo() method (pgjdbc#1668)
  fix: Issue pgjdbc#1680 updating a boolean field requires special handling to set it to t or f instead of true or false (pgjdbc#1682)
  fix testSetNetworkTimeoutEnforcement test failure (pgjdbc#1681)
  minor: fix checkstyle violation of unused import (pgjdbc#1683)
  fix: pgjdbc#1677 NumberFormatException when fetching PGInterval with small value (pgjdbc#1678)
  fix: actually use milliseconds instead of microseconds for timeouts (pgjdbc#1653)
davecramer pushed a commit to davecramer/pgjdbc that referenced this issue Jul 5, 2021

* Write failing test for use of cache for PgDatabaseMetadata.getTypeInfo()

* Implement cacheSQLTypes() and call from PgDatabaseMetaData.getTypeInfo()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
None yet

Successfully merging this pull request may close these issues.

None yet

2 participants