MagicStack / MagicStack/asyncpg

Cannot create type codec for composite type with certain field types.

オープン
#1,267 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
Python
スター
8.1k
フォーク
468
PR マージ指標
30日以内にマージされた PR はありません

説明

Hello, I noticed I can't create a type codec for a composite type if it has a field of type json, a jsonb or a geometry type. Why is so and is there a way to sidestep this issue?

import json
from dataclasses import dataclass

@dataclass
class Foo:
    data: dict

await conn.execute("CREATE TABLE foo (data jsonb NOT NULL);")

await conn.set_type_codec(
    "foo", 
    schema="public",
    encoder=lambda foo: (json.dumps(foo.data),), 
    decoder=lambda row: Foo(json.loads(row)), 
    format="tuple",
)
UnsupportedClientFeatureError: cannot decode type "public"."foo": text encoding of composite types is not supported

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず、jsonbフィールドを含む複合型を使い、conn.set_type_codec によって例を再現します。次に、複合codecの処理とPostgreSQLの型フォーマットの制約を調査します。報告されたフィールド型がサポートされていることを確認するか、制限事項とサポートされる回避策を明確に文書化できれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
postgresql, python
領域
databases
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。