パッケージ org.postgresql.core

クラス PGStream

java.lang.Object
org.postgresql.core.PGStream
すべての実装されたインタフェース:
Closeable, Flushable, AutoCloseable

public class PGStream extends Object implements Closeable, Flushable

Wrapper around the raw connection to the server that implements some basic primitives (reading/writing formatted data, doing string encoding, etc).

In general, instances of PGStream are not threadsafe; the caller must ensure that only one thread at a time is accessing a particular PGStream instance.

  • コンストラクタの詳細

    • PGStream

      public PGStream(SocketFactory socketFactory, HostSpec hostSpec, int timeout) throws IOException
      Constructor: Connect to the PostgreSQL back end and return a stream connection.
      パラメータ:
      socketFactory - socket factory to use when creating sockets
      hostSpec - the host and port to connect to
      timeout - timeout in milliseconds, or 0 if no timeout set
      例外:
      IOException - if an IOException occurs below it.
    • PGStream

      public PGStream(PGStream pgStream, int timeout) throws IOException
      例外:
      IOException
    • PGStream

      @Deprecated public PGStream(SocketFactory socketFactory, HostSpec hostSpec) throws IOException
      Constructor: Connect to the PostgreSQL back end and return a stream connection.
      パラメータ:
      socketFactory - socket factory
      hostSpec - the host and port to connect to
      例外:
      IOException - if an IOException occurs below it.
  • メソッドの詳細

    • isGssEncrypted

      public boolean isGssEncrypted()
    • setSecContext

      public void setSecContext(GSSContext secContext)
    • viaCM

      public boolean viaCM()
    • getHostSpec

      public HostSpec getHostSpec()
    • getSocket

      public Socket getSocket()
    • getSocketFactory

      public SocketFactory getSocketFactory()
    • hasMessagePending

      public boolean hasMessagePending() throws IOException
      Check for pending backend messages without blocking. Might return false when there actually are messages waiting, depending on the characteristics of the underlying socket. This is used to detect asynchronous notifies from the backend, when available.
      戻り値:
      true if there is a pending backend message
      例外:
      IOException - if something wrong happens
    • hasMessagePending

      public boolean hasMessagePending(int n, int milliSec, boolean avoidWait) throws IOException
      Check for pending backend messages without blocking. Might return false when there actually are messages waiting, depending on the characteristics of the underlying socket. This is used to detect asynchronous notifies from the backend, when available.
      パラメータ:
      n - required bytes
      milliSec - timeout milli seconds
      avoidWait - not adding minStreamAvailableCheckDelay
      戻り値:
      true if there is a pending backend message
      例外:
      IOException - if something wrong happens
    • setMinStreamAvailableCheckDelay

      public void setMinStreamAvailableCheckDelay(int delay)
    • setWaitMilliSec

      public void setWaitMilliSec(int waitMilliSec)
    • setCM

      public void setCM(boolean isCM)
    • isCM

      public boolean isCM()
    • changeSocket

      public void changeSocket(Socket socket) throws IOException
      Switch this stream to using a new socket. Any existing socket is not closed; it's assumed that we are changing to a new socket that delegates to the original socket (e.g. SSL).
      パラメータ:
      socket - the new socket to change to
      例外:
      IOException - if something goes wrong
    • getEncoding

      public Encoding getEncoding()
    • setEncoding

      public void setEncoding(Encoding encoding) throws IOException
      Change the encoding used by this connection.
      パラメータ:
      encoding - the new encoding to use
      例外:
      IOException - if something goes wrong
    • getEncodingWriter

      public Writer getEncodingWriter() throws IOException

      Get a Writer instance that encodes directly onto the underlying stream.

      The returned Writer should not be closed, as it's a shared object. Writer.flush needs to be called when switching between use of the Writer and use of the PGStream write methods, but it won't actually flush output all the way out -- call flush() to actually ensure all output has been pushed to the server.

      戻り値:
      the shared Writer instance
      例外:
      IOException - if something goes wrong.
    • sendChar

      public void sendChar(int val) throws IOException
      Sends a single character to the back end.
      パラメータ:
      val - the character to be sent
      例外:
      IOException - if an I/O error occurs
    • sendInteger4

      public void sendInteger4(int val) throws IOException
      Sends a 4-byte integer to the back end.
      パラメータ:
      val - the integer to be sent
      例外:
      IOException - if an I/O error occurs
    • sendInteger2

      public void sendInteger2(int val) throws IOException
      Sends a 2-byte integer (short) to the back end.
      パラメータ:
      val - the integer to be sent
      例外:
      IOException - if an I/O error occurs or val cannot be encoded in 2 bytes
    • send

      public void send(byte[] buf) throws IOException
      Send an array of bytes to the backend.
      パラメータ:
      buf - The array of bytes to be sent
      例外:
      IOException - if an I/O error occurs
    • send

      public void send(byte[] buf, int siz) throws IOException
      Send a fixed-size array of bytes to the backend. If buf.length < siz, pad with zeros. If buf.length > siz, truncate the array.
      パラメータ:
      buf - the array of bytes to be sent
      siz - the number of bytes to be sent
      例外:
      IOException - if an I/O error occurs
    • send

      public void send(byte[] buf, int off, int siz) throws IOException
      Send a fixed-size array of bytes to the backend. If length < siz, pad with zeros. If length > siz, truncate the array.
      パラメータ:
      buf - the array of bytes to be sent
      off - offset in the array to start sending from
      siz - the number of bytes to be sent
      例外:
      IOException - if an I/O error occurs
    • send

      public void send(ByteStreamWriter writer) throws IOException
      Send a fixed-size array of bytes to the backend. If length < siz, pad with zeros. If length > siz, truncate the array.
      パラメータ:
      writer - the stream writer to invoke to send the bytes
      例外:
      IOException - if an I/O error occurs
    • peekChar

      public int peekChar() throws IOException
      Receives a single character from the backend, without advancing the current protocol stream position.
      戻り値:
      the character received
      例外:
      IOException - if an I/O Error occurs
    • receiveChar

      public int receiveChar() throws IOException
      Receives a single character from the backend.
      戻り値:
      the character received
      例外:
      IOException - if an I/O Error occurs
    • receiveInteger4

      public int receiveInteger4() throws IOException
      Receives a four byte integer from the backend.
      戻り値:
      the integer received from the backend
      例外:
      IOException - if an I/O error occurs
    • receiveInteger4

      public int receiveInteger4(boolean fastmode) throws IOException
      Receives a four byte integer from the backend.
      パラメータ:
      fastmode - skip monitoring Connection Manager
      戻り値:
      the integer received from the backend
      例外:
      IOException - if an I/O error occurs
    • receiveInteger2

      public int receiveInteger2() throws IOException
      Receives a two byte integer from the backend.
      戻り値:
      the integer received from the backend
      例外:
      IOException - if an I/O error occurs
    • receiveInteger2

      public int receiveInteger2(boolean fastmode) throws IOException
      Receives a two byte integer from the backend.
      パラメータ:
      fastmode - skip monitoring Connection Manager
      戻り値:
      the integer received from the backend
      例外:
      IOException - if an I/O error occurs
    • receiveString

      public String receiveString(int len) throws IOException
      Receives a fixed-size string from the backend.
      パラメータ:
      len - the length of the string to receive, in bytes.
      戻り値:
      the decoded string
      例外:
      IOException - if something wrong happens
    • receiveErrorString

      public EncodingPredictor.DecodeResult receiveErrorString(int len) throws IOException
      Receives a fixed-size string from the backend, and tries to avoid "UTF-8 decode failed" errors.
      パラメータ:
      len - the length of the string to receive, in bytes.
      戻り値:
      the decoded string
      例外:
      IOException - if something wrong happens
    • receiveString

      public String receiveString() throws IOException
      Receives a null-terminated string from the backend. If we don't see a null, then we assume something has gone wrong.
      戻り値:
      string from back end
      例外:
      IOException - if an I/O error occurs, or end of file
    • receiveCanonicalString

      public String receiveCanonicalString() throws IOException
      Receives a null-terminated string from the backend and attempts to decode to a canonical String. If we don't see a null, then we assume something has gone wrong.
      戻り値:
      string from back end
      例外:
      IOException - if an I/O error occurs, or end of file
      関連項目:
    • receiveCanonicalStringIfPresent

      public String receiveCanonicalStringIfPresent() throws IOException
      Receives a null-terminated string from the backend and attempts to decode to a canonical String. If we don't see a null, then we assume something has gone wrong.
      戻り値:
      string from back end
      例外:
      IOException - if an I/O error occurs, or end of file
      関連項目:
    • receiveTupleV3

      public Tuple receiveTupleV3() throws IOException, OutOfMemoryError, SQLException
      Read a tuple from the back end. A tuple is a two dimensional array of bytes. This variant reads the V3 protocol's tuple representation.
      戻り値:
      tuple from the back end
      例外:
      IOException - if a data I/O error occurs
      SQLException - if read more bytes than set maxResultBuffer
      OutOfMemoryError
    • receive

      public byte[] receive(int siz) throws IOException
      Reads in a given number of bytes from the backend.
      パラメータ:
      siz - number of bytes to read
      戻り値:
      array of bytes received
      例外:
      IOException - if a data I/O error occurs
    • receive

      public void receive(byte[] buf, int off, int siz) throws IOException
      Reads in a given number of bytes from the backend.
      パラメータ:
      buf - buffer to store result
      off - offset in buffer
      siz - number of bytes to read
      例外:
      IOException - if a data I/O error occurs
    • receive

      public void receive(byte[] buf, int off, int siz, boolean fastmode) throws IOException
      Reads in a given number of bytes from the backend.
      パラメータ:
      buf - buffer to store result
      off - offset in buffer
      siz - number of bytes to read
      fastmode - skip monitoring Connection Manager
      例外:
      IOException - if a data I/O error occurs
    • skip

      public void skip(int size) throws IOException
      例外:
      IOException
    • sendStream

      public void sendStream(InputStream inStream, int remaining) throws IOException
      Copy data from an input stream to the connection.
      パラメータ:
      inStream - the stream to read data from
      remaining - the number of bytes to copy
      例外:
      IOException - if a data I/O error occurs
    • flush

      public void flush() throws IOException
      Flush any pending output to the backend.
      定義:
      flush インタフェース内 Flushable
      例外:
      IOException - if an I/O error occurs
    • receiveEOF

      public void receiveEOF() throws SQLException, IOException
      Consume an expected EOF from the backend.
      例外:
      IOException - if an I/O error occurs
      SQLException - if we get something other than an EOF
    • close

      public void close() throws IOException
      Closes the connection.
      定義:
      close インタフェース内 AutoCloseable
      定義:
      close インタフェース内 Closeable
      例外:
      IOException - if an I/O Error occurs
    • setNetworkTimeout

      public void setNetworkTimeout(int milliseconds) throws IOException
      例外:
      IOException
    • getNetworkTimeout

      public int getNetworkTimeout() throws IOException
      例外:
      IOException
    • setMaxResultBuffer

      public void setMaxResultBuffer(@Nullable String value) throws PSQLException
      Method to set MaxResultBuffer inside PGStream.
      パラメータ:
      value - value of new max result buffer as string (cause we can expect % or chars to use multiplier)
      例外:
      PSQLException - exception returned when occurred parsing problem.
    • getMaxResultBuffer

      public long getMaxResultBuffer()
      Get MaxResultBuffer from PGStream.
      戻り値:
      size of MaxResultBuffer
    • setMaxRowSizeBytes

      public void setMaxRowSizeBytes(int rowSizeBytes)
      The idea behind this method is to keep in maxRowSize the size of biggest read data row. As there may be many data rows send after each other for a query, then value in maxRowSize would contain value noticed so far, because next data rows and their sizes are not read for that moment. We want it increasing, because the size of the biggest among data rows will be used during computing new adaptive fetch size for the query.
      パラメータ:
      rowSizeBytes - new value to be set as maxRowSizeBytes
    • getMaxRowSizeBytes

      public int getMaxRowSizeBytes()
      Get actual max row size noticed so far.
      戻り値:
      value of max row size
    • clearMaxRowSizeBytes

      public void clearMaxRowSizeBytes()
      Clear value of max row size noticed so far.
    • clearResultBufferCount

      public void clearResultBufferCount()
      Clear count of byte buffer.
    • isClosed

      public boolean isClosed()
    • setCMStream

      public void setCMStream(PGStream cmStream)
    • getCMStream

      public PGStream getCMStream()