|
|
|
Pointer page
|
|||
|---|---|---|---|
|
#18+
dimitr только в исходниках, наверное. В ods.h есть структура Ods::Descriptor. В dsc_offset лежит смещение поля в буфере записи, в dsc_length - длина поля, в dsc_dtype - тип данных и т.п. По rhd_format записи читаешь формат из rdb$formats, там блоб = массиву структур Ods::Descriptor, по одной на поле таблицы. Что-то не врублюсь куда прикрурить этот ods::Description. Как я понимаю из чего состоит страница данных. Сначала идет Struct data_page. у нее в конце идет массив пар смещение-длина. По этому смещению идет struct rhd. Заголовок записи. В конце этой структуры массив данных длиной data_page.dpg_length (вот тут слегка запутался-не уверен) Это запакованные данные. Распаковываем. дальше как я понял идет массив NULL флагов. И вот дальше куда прикрутить эту Ods::Descriptor? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 15:05:30 |
|
||
|
Pointer page
|
|||
|---|---|---|---|
|
#18+
Swv, поле RDB$FORMATS.RDB$DESCRIPTOR содержит массив Ods::Descriptor-ов. Чтобы найти поле N в распакованной записи надо знать его смещение и длину. Смещение берешь в array[N].dsc_offset, длину берешь в array[N].dsc_length. Дальше лезешь в распакованную запись и читаешь нужные байты. NULL флаг его берешь в маске, бит N. Все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 17:27:05 |
|
||
|
Pointer page
|
|||
|---|---|---|---|
|
#18+
dimitr, угу... в rdb$formats есть записи для каждой не системной таблицы и соответственно для форматов. А как быть тогда с все же с системными таблицами? Смотрел экспертом - единой логики расположения данных не вывел ) Особенно в тех таблицах, в которых перемешаны блобы null и not null (RDB$RELATIONS). И такой еще вопросик можно? вот есть табличка. все та же rdb$formats. в ней всего три поля. По распакованным данным и сегментам записи прохожу. Видно, что сегменты дуть последовательно - сама запись и сегмент с флагом блоба. Есть там поле RDB$descriptor. Там 8 байт. первые два байта видимо длина и следующие ИД блоба?. Как соотнести этот ИД с нужным сегментом самой записи, чтоб прочитать значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2013, 18:17:22 |
|
||
|
|

start [/forum/topic.php?fid=40&gotonew=1&tid=1564125]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
145ms |
get topic data: |
7ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 186ms |
| total: | 404ms |

| 0 / 0 |
