|
|
|
Таблица, из которой было взято поле.
|
|||
|---|---|---|---|
|
#18+
Задумался очередной раз об ОРМе. Пока все в виде ресерча. Есть исходные данные: Код: sql 1. 2. Есть запрос: Код: sql 1. Хотелось-бы программно знать к какой таблице принадлежат id и data (типы их нам должен вернуть клиент Пг). Вообще можно узнать вот так: Код: sql 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Надо для того, чтобы можно было понять как представлять, допустим, текст или JSON или BYTEA в приложении, если есть своя схема БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2015, 19:26 |
|
||
|
Таблица, из которой было взято поле.
|
|||
|---|---|---|---|
|
#18+
Warstone, Мне кажется вы не с той стороны к задаче подходите. Когда база дает ответ там есть информация о всех типах колонок. Через libpq она доступна через вызов: PQftype Returns the data type associated with the given column number. The integer returned is the internal OID number of the type. Column numbers start at 0. Oid PQftype(const PGresult *res, int column_number); You can query the system table pg_type to obtain the names and properties of the various data types. The OIDs of the built-in data types are defined in the file src/include/catalog/pg_type.h in the source tree. (из http://www.postgresql.org/docs/9.4/interactive/libpq-exec.html#LIBPQ-EXEC-SELECT-INFO ) Многие известные мне API к другим языкам так или иначе построены поверх LibPQ и дают доступ к этой информации (а то и сами разбирают типы полей как надо). Или у вас ситуация когда тип у поля text а в нем дрова лежат (json например)? И эта информация ниоткуда ни очевидна кроме описания схемы БД внутри приложения? -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 06:13 |
|
||
|
Таблица, из которой было взято поле.
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Да, я могу вытащить типы из библиотеки. Но это не то... Рассмотрим случай (не придерайтесь к архитектуре хранения и т.д.): Есть 2 таблицы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Допустим что в img.data хранится сама картинка (бинарь), а в img_meta.data хранится запакованный JSON с тегами и прочей информацией (знаю что не оптимально и вообще так делать вредно. Это просто пример). Берем запрос: Код: sql 1. Будет 3 колонки, BIGINT, BYTEA, BYTEA. У меня где-то в приложении есть метаинформация об этих таблицах, где записано что это на самом деле BIGINT, XIMAGE, XZJSON. Однако сам ORM в общем случае не может понять что первый BYTEA - это XIMAGE, а второй - XZJSON. Драйвер ему об этом не скажет, ибо сам не знает. Он это может узнать только если будет знать откуда этим поля. Понятно, что если работает математика, то определить это не представляется возможным (Кто его знает что там насчитал пользователь). Мы сейчас о простом случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 12:01 |
|
||
|
Таблица, из которой было взято поле.
|
|||
|---|---|---|---|
|
#18+
Хотя сейчас почитал, возможно что PQftable PQftablecol - то что надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 12:06 |
|
||
|
Таблица, из которой было взято поле.
|
|||
|---|---|---|---|
|
#18+
Накатал патчик для DBD::Pg: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2015, 21:19 |
|
||
|
Таблица, из которой было взято поле.
|
|||
|---|---|---|---|
|
#18+
Накатал ORM на коленке под это дело: https://github.com/Warstone/SORM/blob/develop/test.pl Наконец-то ОРМ, который сочетает (должен сочетать) в себе метаданные и дает тебе писать произвольный SQL запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2015, 04:00 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39041869&tid=1997783]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
81ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 446ms |

| 0 / 0 |
