Package org.postgresql.util
Class PGPropertyMaxResultBufferParser
java.lang.Object
org.postgresql.util.PGPropertyMaxResultBufferParser
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Loggerprivate static final StringUsed only as a human-readable identifier inPSQLExceptionmessages — keep as a string constant so this class never has a verifier-visible reference tojava.lang.management.ManagementFactory.private static final doubleprivate static final String[] -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static longadjustResultSize(long value, LongSupplier maxHeapBytesSupplier) Method to adjust result memory limit size.private static longcalculatePercentOfMemory(String value, int percentPhraseLength, LongSupplier maxHeapBytesSupplier) Method to calculate percent of given max heap memory.private static booleanMethod to check if given value can contain percent declaration of size of max result buffer.private static longDefault heap-bytes source: routes throughJvmHeapAccess, which lives in its own class so the verifier does not need to resolvejava.lang.management.ManagementFactoryunless this method is actually invoked.private static intgetPercentPhraseLengthIfContains(String valueToCheck) Method to get length of percent phrase existing in given string, only if one of phrases exist on the length of string.private static intgetPhraseLengthIfContains(String valueToCheck, String phrase) Method to get length of given phrase in given string to check, method checks if phrase exist on the end of given string.private static longparseBytePercentValue(String value, LongSupplier maxHeapBytesSupplier) Method to get percent value of max result buffer size dependable on actual free memory.private static longparseByteValue(String value) Method to get size based on given string value.static longparseProperty(String value) Method to parse value of max result buffer size.(package private) static longparseProperty(String value, LongSupplier maxHeapBytesSupplier) private static voidthrowExceptionAboutParsingError(String message, Object... values) Method to throw message for parsing MaxResultBuffer.
-
Field Details
-
LOGGER
-
MANAGEMENT_FACTORY_CLASS_NAME
Used only as a human-readable identifier inPSQLExceptionmessages — keep as a string constant so this class never has a verifier-visible reference tojava.lang.management.ManagementFactory.- See Also:
-
MAX_RESULT_BUFFER_HEAP_FRACTION
private static final double MAX_RESULT_BUFFER_HEAP_FRACTION- See Also:
-
PERCENT_PHRASES
-
-
Constructor Details
-
PGPropertyMaxResultBufferParser
public PGPropertyMaxResultBufferParser()
-
-
Method Details
-
parseProperty
Method to parse value of max result buffer size.- Parameters:
value- string containing size of bytes with optional multiplier (T, G, M or K) or percent value to declare max percent of heap memory to use.- Returns:
- value of max result buffer size.
- Throws:
PSQLException- Exception when given value can't be parsed.
-
parseProperty
- Throws:
PSQLException
-
checkIfValueContainsPercent
Method to check if given value can contain percent declaration of size of max result buffer.- Parameters:
value- Value to check.- Returns:
- Result if value contains percent.
-
parseBytePercentValue
private static long parseBytePercentValue(String value, LongSupplier maxHeapBytesSupplier) throws PSQLException Method to get percent value of max result buffer size dependable on actual free memory. This method doesn't check other possibilities of value declaration.- Parameters:
value- string containing percent used to define max result buffer.- Returns:
- percent value of max result buffer size.
- Throws:
PSQLException- Exception when given value can't be parsed.
-
getPercentPhraseLengthIfContains
Method to get length of percent phrase existing in given string, only if one of phrases exist on the length of string.- Parameters:
valueToCheck- String which is gonna be checked if contains percent phrase.- Returns:
- Length of phrase inside string, returns -1 when no phrase found.
-
getPhraseLengthIfContains
Method to get length of given phrase in given string to check, method checks if phrase exist on the end of given string.- Parameters:
valueToCheck- String which gonna be checked if contains phrase.phrase- Phrase to be looked for on the end of given string.- Returns:
- Length of phrase inside string, returns -1 when phrase wasn't found.
-
calculatePercentOfMemory
private static long calculatePercentOfMemory(String value, int percentPhraseLength, LongSupplier maxHeapBytesSupplier) throws PSQLException Method to calculate percent of given max heap memory.- Parameters:
value- String which contains percent + percent phrase which gonna be used during calculations.percentPhraseLength- Length of percent phrase inside given value.- Returns:
- Size of byte buffer based on percent of max heap memory.
- Throws:
PSQLException
-
parseByteValue
Method to get size based on given string value. String can contains just a number or number + multiplier sign (like T, G, M or K).- Parameters:
value- Given string to be parsed.- Returns:
- Size based on given string.
- Throws:
PSQLException- Exception when given value can't be parsed.
-
adjustResultSize
Method to adjust result memory limit size. If given memory is larger than 90% of max heap memory then it gonna be reduced to 90% of max heap memory.- Parameters:
value- Size to be adjusted.- Returns:
- Adjusted size (original size or 90% of max heap memory)
-
defaultMaxHeapBytesOrNegativeOne
private static long defaultMaxHeapBytesOrNegativeOne()Default heap-bytes source: routes throughJvmHeapAccess, which lives in its own class so the verifier does not need to resolvejava.lang.management.ManagementFactoryunless this method is actually invoked. On runtimes withoutjava.lang.management(e.g., Android ART), loadingJvmHeapAccessthrowsNoClassDefFoundErroron the INVOKESTATIC below; we map that to-1to signal "max heap unavailable". -
throwExceptionAboutParsingError
private static void throwExceptionAboutParsingError(String message, Object... values) throws PSQLException Method to throw message for parsing MaxResultBuffer.- Parameters:
message- Message to be added to exception.values- Values to be put inside exception message.- Throws:
PSQLException- Exception when given value can't be parsed.
-