Returns the WellKnownClient that the detector thinks is connecting to PGAdapter based
purely on the list of parameters. It will return UNSPECIFIED if no specific client could be
determined.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Class ClientAutoDetector (0.27.1)\n\nVersion latestkeyboard_arrow_down\n\n- [0.27.1 (latest)](/java/docs/reference/pgadapter/latest/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.27.0](/java/docs/reference/pgadapter/0.27.0/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.26.0](/java/docs/reference/pgadapter/0.26.0/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.25.0](/java/docs/reference/pgadapter/0.25.0/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.24.0](/java/docs/reference/pgadapter/0.24.0/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.23.1](/java/docs/reference/pgadapter/0.23.1/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.22.1](/java/docs/reference/pgadapter/0.22.1/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.21.0](/java/docs/reference/pgadapter/0.21.0/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.20.0](/java/docs/reference/pgadapter/0.20.0/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.19.1](/java/docs/reference/pgadapter/0.19.1/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.18.4](/java/docs/reference/pgadapter/0.18.4/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.17.0](/java/docs/reference/pgadapter/0.17.0/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.16.0](/java/docs/reference/pgadapter/0.16.0/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.15.0](/java/docs/reference/pgadapter/0.15.0/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.14.1](/java/docs/reference/pgadapter/0.14.1/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.9.0](/java/docs/reference/pgadapter/0.9.0/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.8.0](/java/docs/reference/pgadapter/0.8.0/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.7.0](/java/docs/reference/pgadapter/0.7.0/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.6.1](/java/docs/reference/pgadapter/0.6.1/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector)\n- [0.5.1](/java/docs/reference/pgadapter/0.5.1/com.google.cloud.spanner.pgadapter.utils.ClientAutoDetector) \n\n public class ClientAutoDetector\n\nUtility class that tries to automatically detect well-known clients and drivers that are\nconnecting to PGAdapter. \n\nInheritance\n-----------\n\n[java.lang.Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) \\\u003e ClientAutoDetector \n\nInherited Members\n-----------------\n\n[Object.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--) \n[Object.equals(Object)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-) \n[Object.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--) \n[Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) \n[Object.hashCode()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--) \n[Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) \n[Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) \n[Object.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--) \n[Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) \n[Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) \n[Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)\n\nStatic Fields\n-------------\n\n### DEFAULT_LOCAL_STATEMENTS\n\n public static final ImmutableList\u003cLocalStatement\u003e DEFAULT_LOCAL_STATEMENTS\n\n### EMPTY_LOCAL_STATEMENTS\n\n public static final ImmutableList\u003cLocalStatement\u003e EMPTY_LOCAL_STATEMENTS\n\n### PGBENCH_USAGE_HINT\n\n public static final String PGBENCH_USAGE_HINT\n\nStatic Methods\n--------------\n\n### detectClient(PGSetting setting)\n\n public static ClientAutoDetector.WellKnownClient detectClient(PGSetting setting)\n\nDetect the client based on a session state setting.\n\n### detectClient(List\\\u003cParseMessage\\\u003e skippedParseMessages, ParseMessage parseMessage)\n\n public static ClientAutoDetector.WellKnownClient detectClient(List\u003cParseMessage\u003e skippedParseMessages, ParseMessage parseMessage)\n\nReturns the WellKnownClient that the detector thinks is connected to PGAdapter based on\nthe Parse message that has been received.\n\n### detectClient(List\\\u003cParseMessage\\\u003e skippedParseMessages, List\\\u003cStatement\\\u003e statements)\n\n public static ClientAutoDetector.WellKnownClient detectClient(List\u003cParseMessage\u003e skippedParseMessages, List\u003cStatement\u003e statements)\n\nReturns the WellKnownClient that the detector thinks is connected to PGAdapter based on\nthe given list of SQL statements that have been executed.\n\n### detectClient(List\\\u003cString\\\u003e orderParameterKeys, Map\\\u003cString,String\\\u003e parameters)\n\n public static ClientAutoDetector.WellKnownClient detectClient(List\u003cString\u003e orderParameterKeys, Map\u003cString,String\u003e parameters)\n\nReturns the WellKnownClient that the detector thinks is connecting to PGAdapter based\npurely on the list of parameters. It will return UNSPECIFIED if no specific client could be\ndetermined.\n\nConstructors\n------------\n\n### ClientAutoDetector()\n\n public ClientAutoDetector()"]]