Liking cljdoc? Tell your friends :D

toucan2.jdbc.read

read-column-thunk method, which is used to determine how to read values of columns in results, and default implementations

[[read-column-thunk]] method, which is used to determine how to read values of columns in results, and default
implementations
raw docstring

get-object-of-class-thunkclj

(get-object-of-class-thunk rset i klass)

Return a thunk that will be used to fetch values at column index i from ResultSet rset as a given class. Calling this thunk is equivalent to

(.getObject rset i klass)

but includes extra logging.

Return a thunk that will be used to fetch values at column index `i` from ResultSet `rset` as a given class. Calling
this thunk is equivalent to

```clj
(.getObject rset i klass)
```

but includes extra logging.
sourceraw docstring

read-column-thunkclj

(read-column-thunk conn₁ model₂ rset rsmeta₍₃₎ i)

Return a zero-arg function that, when called, will fetch the value of the column from the current row.

Dispatches on java.sql.Connection class, model, and the java.sql.Types mapping for the column, e.g. java.sql.Types/TIMESTAMP.

TODO -- dispatch for this method is busted.

  1. The java.sql.Types column type should be an explicit parameter. A little weird to dispatch off of something that's not even one of the parameters

  2. Should this also dispatch off of the actual underlying column name? So you can read a column in different ways for different models.

  3. Should this dispatch off of the underlying database column type name string, e.g. timestamp or timestamptz? It seems like a lot of the time we need to do different things based on that type name.

read-column-thunk is defined in toucan2.jdbc.read (toucan2/jdbc/read.clj:32).

It caches methods using a methodical.impl.cache.watching.WatchingCache.

It uses the method combination methodical.impl.combo.threaded.ThreadingMethodCombination with the threading strategy :thread-last.

It uses the dispatcher methodical.impl.dispatcher.multi_default.MultiDefaultDispatcher with hierarchy #'clojure.core/global-hierarchy and prefs {[:toucan2.jdbc.mysql-mariadb/connection :default 93] #{[java.sql.Connection :default 93]}, [:toucan2.jdbc.postgres/connection :default 93] #{[java.sql.Connection :default 93]}}.

The default value is :default.

It uses the method table methodical.impl.method_table.standard.StandardMethodTable.

These primary methods are known:

  • :default, defined in toucan2.jdbc.read (toucan2/jdbc/read.clj:68)

  • [:default :default 92], defined in toucan2.jdbc.read (toucan2/jdbc/read.clj:123)

  • [:default :default 2005], defined in toucan2.jdbc.read (toucan2/jdbc/read.clj:106)

  • [:toucan2.jdbc.mysql-mariadb/connection :default 93], defined in [[toucan2.jdbc.mysql-mariadb]] (toucan2/jdbc/mysql_mariadb.clj:27)

    It has the following documentation:

    MySQL/MariaDB timestamp is normalized to UTC, so return it as an OffsetDateTime rather than a LocalDateTime. datetime columns should be returned as LocalDateTime. Both timestamp and datetime seem to come back as java.sql.Types/TIMESTAMP, so check the actual database column type name so we can fetch objects as the correct class.

  • [:toucan2.jdbc.postgres/connection :default 93], defined in [[toucan2.jdbc.postgres]] (toucan2/jdbc/postgres.clj:18)

    It has the following documentation:

    Both Postgres timestamp and timestamp with time zone come back as java.sql.Types/TIMESTAMP; check the actual database column type name so we can fetch objects as the correct class.

  • [:default :default 2014], defined in toucan2.jdbc.read (toucan2/jdbc/read.clj:115)

  • [:default :default 93], defined in toucan2.jdbc.read (toucan2/jdbc/read.clj:111)

  • [:default :default 91], defined in toucan2.jdbc.read (toucan2/jdbc/read.clj:119)

  • [:default :default 2013], defined in toucan2.jdbc.read (toucan2/jdbc/read.clj:127)

These aux methods are known:

:after methods:

Return a zero-arg function that, when called, will fetch the value of the column from the current row.

  Dispatches on `java.sql.Connection` class, `model`, and the `java.sql.Types` mapping for the column, e.g.
  `java.sql.Types/TIMESTAMP`.

  ### TODO -- dispatch for this method is busted.

  1. The `java.sql.Types` column type should be an explicit parameter. A little weird to dispatch off of something
     that's not even one of the parameters

  2. Should this also dispatch off of the actual underlying column name? So you can read a column in different ways for
     different models.

  3. Should this dispatch off of the underlying database column type name string, e.g. `timestamp` or `timestamptz`? It
     seems like a lot of the time we need to do different things based on that type name.

read-column-thunk is defined in [[toucan2.jdbc.read]] (toucan2/jdbc/read.clj:32).

It caches methods using a `methodical.impl.cache.watching.WatchingCache`.

It uses the method combination `methodical.impl.combo.threaded.ThreadingMethodCombination`
with the threading strategy `:thread-last`.

It uses the dispatcher `methodical.impl.dispatcher.multi_default.MultiDefaultDispatcher`
with hierarchy `#'clojure.core/global-hierarchy`
and prefs `{[:toucan2.jdbc.mysql-mariadb/connection :default 93] #{[java.sql.Connection :default 93]}, [:toucan2.jdbc.postgres/connection :default 93] #{[java.sql.Connection :default 93]}}`.

The default value is `:default`.

It uses the method table `methodical.impl.method_table.standard.StandardMethodTable`.

These primary methods are known:

* `:default`, defined in [[toucan2.jdbc.read]] (toucan2/jdbc/read.clj:68) 

* `[:default :default 92]`, defined in [[toucan2.jdbc.read]] (toucan2/jdbc/read.clj:123) 

* `[:default :default 2005]`, defined in [[toucan2.jdbc.read]] (toucan2/jdbc/read.clj:106) 

* `[:toucan2.jdbc.mysql-mariadb/connection :default 93]`, defined in [[toucan2.jdbc.mysql-mariadb]] (toucan2/jdbc/mysql_mariadb.clj:27) 
  
  It has the following documentation:
  
  MySQL/MariaDB `timestamp` is normalized to UTC, so return it as an `OffsetDateTime` rather than a `LocalDateTime`.
    `datetime` columns should be returned as `LocalDateTime`. Both `timestamp` and `datetime` seem to come back as
    `java.sql.Types/TIMESTAMP`, so check the actual database column type name so we can fetch objects as the correct
    class.

* `[:toucan2.jdbc.postgres/connection :default 93]`, defined in [[toucan2.jdbc.postgres]] (toucan2/jdbc/postgres.clj:18) 
  
  It has the following documentation:
  
  Both Postgres `timestamp` and `timestamp with time zone` come back as `java.sql.Types/TIMESTAMP`; check the actual
    database column type name so we can fetch objects as the correct class.

* `[:default :default 2014]`, defined in [[toucan2.jdbc.read]] (toucan2/jdbc/read.clj:115) 

* `[:default :default 93]`, defined in [[toucan2.jdbc.read]] (toucan2/jdbc/read.clj:111) 

* `[:default :default 91]`, defined in [[toucan2.jdbc.read]] (toucan2/jdbc/read.clj:119) 

* `[:default :default 2013]`, defined in [[toucan2.jdbc.read]] (toucan2/jdbc/read.clj:127) 

These aux methods are known:

`:after` methods:

* `:default`, defined in [[toucan2.jdbc.read]] (toucan2/jdbc/read.clj:75) 
sourceraw docstring

type-nameclj

(type-name i)
(type-name i not-found)

Map of java.sql.Types enum integers (e.g. java.sql.Types/FLOAT, whose value is 6) to the string type name e.g. FLOAT.

(type-name java.sql.Types/FLOAT) -> (type-name 6) -> "FLOAT"
Map of `java.sql.Types` enum integers (e.g. `java.sql.Types/FLOAT`, whose value is `6`) to the string type name e.g.
`FLOAT`.

```clj
(type-name java.sql.Types/FLOAT) -> (type-name 6) -> "FLOAT"
```
sourceraw docstring

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close