Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Manabu Nakamura
    @gakuzzzz
    :pray:
    Tsukasa Kitachi
    @kxbmap
    https://github.com/scalikejdbc/scalikejdbc/pull/522/commits/b90ece035abb3d54f331285d2cecb32f16907f0b#diff-a44f3b560343189aff31f4d632c103f6R206
    これPramerterBinderFactory/Bindersのxmapがnullチェックしてる影響で、コメント外すとstmt.setObject(3, null)が呼ばれてしまう
    Manabu Nakamura
    @gakuzzzz
    あー なるほど。Option[SQLSyntax] も xmap 使わないで自前で定義した方が良さそうですね。
    optionalParameterBinderFactory の中で asInstanceOf 使ってるなら AsIsParameterBinder の map も asInstanceOf で実装して optionalParameterBinderFactory はそのままにしても良かったかも知れない
    Manabu Nakamura
    @gakuzzzz
    scalikejdbc/scalikejdbc#521 assignされてますが結局何をすれば……?
    Kazuhiro Sera
    @seratch
    ParameterBinderFactory をリードしたメンテナとしてコメント、フォローしてもらえるならというくらいです。
    Manabu Nakamura
    @gakuzzzz
    そもそもの動機に納得してもらえて無い様なのでどうにもですね……
    Kazuhiro Sera
    @seratch
    2.4.1 出すかな
    Tsukasa Kitachi
    @kxbmap
    :+1:
    Manabu Nakamura
    @gakuzzzz
    scalikejdbc/scalikejdbc#530 を解決するのに ParameterBindarFactory の型引数を contravariant にしてこねくり回してみましたが gakuzzzz/scalikejdbc@3c8a961
    ParameterBindarFactory[Null] が ambiguous implicit values になってしまう謎。
    priority 的には Null が一番高くなるようにしてるつもりなんですが https://github.com/gakuzzzz/scalikejdbc/blob/3c8a96177fdb75deb4f82b614a4a31a55ea3186c/scalikejdbc-core/src/main/scala/scalikejdbc/ParameterBinderFactory.scala#L57-L62
    うまくいかないのは Null だけなんか特殊な動きするんでしたっけ?
    kenji yoshida
    @xuwei-k
    https://issues.scala-lang.org/browse/SI-2509 関連するか知らんけど、varianceとimplicit組み合わせると面倒らしいですよ、という何か
    (これ直したい、とか言ってた) https://twitter.com/milessabin/status/737216211835047936
    Manabu Nakamura
    @gakuzzzz
    ParameterBindarFactory[Null] は implicit val をやめて implicit object にしたら何故か解決したけど、 java.sql.Date と java.util.Date の継承関係とかでまた問題になるので contravariant にするのはやっぱり問題ありそう。

    ParameterBindarFactory の xmap を削除するのだけ対応して、こういう定義を可能にする、という対応だとどうでしょうか? > @all
    gakuzzzz/scalikejdbc@748fabe

    ただこれめっちゃバイナリ互換性壊れる

    kenji yoshida
    @xuwei-k
    些細な疑問なんですが、 scalikejdbc.Binders のインスタンスってimplicitにしたら衝突するんでしたっけ?
    Binders.string.xmap じゃなく implicitly[Binders[String]].xmap と書きたかったな、くらいな大して重要じゃない使い勝手の面での何かに気づいたので
    Manabu Nakamura
    @gakuzzzz

    TypeBinder や ParameterBinderFactory の object 継承関係で priority とか調整してるので、 Binders も implicit にするとその辺の調整が面倒そうだなーという感じでした。
    implicitly[Binders[String]].xmap の書きたみは僕もあるので、LowPriorityで

    def foo[A](implicit b: TypeBinder[A], p: ParameterBinderFactory[A]): Binders[A]

    的なものを用意するのはありかも?

    kenji yoshida
    @xuwei-k
    Scala 2.12.0-M5 対応、 ライブラリ出揃ってる( specs2 と scalatest ) けど、scalatestが3系しか出してなくて、一部コンパイルエラー、みたいな状況
    xuwei-k/scalikejdbc@ceb8e1a
    2系もリリースしてくれ、って言ったらしてくれないかな・・・
    Kazuhiro Sera
    @seratch
    issue たててみました scalatest/scalatest#925
    kenji yoshida
    @xuwei-k
    ひとまずどうにかしてみた https://github.com/scalikejdbc/scalikejdbc/pull/541/files
    KAWACHI Takashi
    @tkawachi
    stream ライブラリへのつなぎ込みを試してます。 https://github.com/tkawachi/scalikejdbc-stream 今はストリーム作る時に ConnectionPool を渡してますが、適当でしょうか?アドバイスいただければ幸いです。
    Kazuhiro Sera
    @seratch
    まあそれ自体は特に問題はなさそうですね。
    Kazuhiro Sera
    @seratch
    74 票。
    今の所の考えとしては、時期はともかくアナウンスしやすいので 2.5 も含め 2.x は今のままで 3.x で Java8 以上としたいですね。で、2.5.x かどうかわからないけど 2.x の最終マイナーバージョンは 1.x と同様しばらくメンテナンスリリース対象。
    あとで en にも書く。
    kenji yoshida
    @xuwei-k
    Scala 2.12.0-RC1 でコンパイルしたら変な死に方してコンパイル通らなかったので、報告しておきました https://issues.scala-lang.org/browse/SI-9918
    Kazuhiro Sera
    @seratch
    おお、ありがとうございます。
    kenji yoshida
    @xuwei-k
    そしてそれによりこういう話が scala/community-builds#279
    Kazuhiro Sera
    @seratch
    お、こっちでなんかやるんでしたっけ。
    kenji yoshida
    @xuwei-k
    いや、むこうで勝手にやってくれるんじゃないですかね?場合によってはなにか聞かれるかもしれないけど
    kenji yoshida
    @xuwei-k
    scalaコンパイラのバグ、直ったっぽい
    xuwei-k/scalikejdbc@8a48c8f
    https://travis-ci.org/xuwei-k/scalikejdbc/builds/160631836
    kenji yoshida
    @xuwei-k
    SQLの予約語の場合に(MySQLだと)バッククォートで囲ってないといけない、とかかな。予約語以外のパターンでも囲っておいて方がいいんだっけ? http://shobon.hatenablog.com/entry/2014/03/16/142256 scalikejdbc/scalikejdbc#571 xuwei-k/scalikejdbc@174991c (← つまりこう?)
    そもそもSQLの予約語にscalikejdbc全体で考慮なんて基本してない気はする? (他のライブラリって対応してるのだろうか)
    ここでの自分の指摘により https://github.com/scalikejdbc/scalikejdbc/pull/427#issuecomment-119067511 必要以上に c.name.replace("`", "") を入れてしまったとか?
    Toshiyuki Takahashi
    @tototoshi
    mysqlの時は何も考えずに全部バッククォート入れるなあ
    kenji yoshida
    @xuwei-k
    MySQLしか考慮してないpull reqがきて、ちゃんと他のDBも対応しろ、と自分が指摘する未来を想像している
    jakelizzI
    @jakelizzI

    play scala 2.5 でpostgresqlとscalikejdbcを利用しようと思っているのですが、2点ほど質問があります。
    1.postgresqlのデータベース名がdefaultの時はうまくいくのですが、変更した場合は

    [IllegalStateException: Connection pool is not yet initialized.(name:'default)]

    が出てしまいます。データベース名を変更した場合はどのようにすればよろしいのでしょうか?

    1. ConnectionPoolにHikariCPを使用する場合は、BoneCPConnectionPoolのようなクラスを自作しなければならないのでしょうか?
    Toshiyuki Takahashi
    @tototoshi
    http://scalikejdbc.org/documentation/connection-pool.html 下の方にhikaricpの例があります
    Kazuhiro Sera
    @seratch
    play だったら scalikejdbc-play-dbapi-adapter を使うようにして http://scalikejdbc.org/documentation/playframework-support.html
    scalikejdbc 関係ない Play の hikaricp 初期化設定して DbApi 経由で使うというのもアリですね。
    jakelizzI
    @jakelizzI

    @tototoshi さん ありがとうございます!

    val dataSource: DataSource = {
      val ds = new HikariDataSource()
      ds.setDataSourceClassName(dataSourceClassName)
      ds.addDataSourceProperty("url", url)
      ds.addDataSourceProperty("user", user)
      ds.addDataSourceProperty("password", password)
      ds
    }
    ConnectionPool.singleton(new DataSourceConnectionPool(dataSource))

    上記の記述は、どこに記述すればいいのでしょうか....

    Toshiyuki Takahashi
    @tototoshi
    あ、playの場合は瀬良さんの方法が良いと思います。
    jakelizzI
    @jakelizzI
    @seratch さん お答えありがとうございます!
    scalikejdbc関係ないPlayのhikaricp初期化設定とは
    https://www.playframework.com/documentation/2.5.x/SettingsJDBC
    の方法でしょうか?
    Manabu Nakamura
    @gakuzzzz

    IllegalStateException: Connection pool is not yet initialized.

    これが発生する場所がわかればもう少し建設的なコメントができるかもですね。

    もし SQLSyntaxSupport を mixin した object の操作で出ている場合は、connectionPoolName を override して自分でつけた ConnectionPool の名前を指定するとよいかと思います。

    Kazuhiro Sera
    @seratch
    @jakelizzI はい、そうです。それを設定して有効になる DbApi からコネクションを取るように上記のアダプターモジュールを使ってください。
    jakelizzI
    @jakelizzI

    @gakuzzzz さん ありがとうございます!
    おっしゃるとおり、SQLSyntaxSupportをmixinしたobjectへの操作で発生しております。ですので、試してみたいのですが、別のExceptionが発生してしまったので後々試してみようと思います!

    @seratch さん ありがとうございます!enabled += "scalikejdbc.PlayDBApiAdapterModule"←の記述でplay側でのconnectionPoolの設定がDbApiに反映されるということでしょうか?また、defaultの設定のまま行っていた時は特にConnectionを意識していなかったので、どのようにDbApiからコネクションを取得するのかお教えいただけますか?

    Kazuhiro Sera
    @seratch
    ドキュメントに書いてあることで設定できるはずです。
    ponkotuy
    @ponkotuy
    hasMany[]().byDefaultとやったらうまく動かないので、明示的にjoinsしたら動くようになったぜ!ってことがあったんですが、これ仕様ですか?