|
MySQL.RU - Webboard
Вернуться
Непонятки с UDF & group by (Саша) 08/01/2004 - 02:07:56
Re: Непонятки с UDF & group by (Энкарито) 08/01/2004 - 12:26:30
Re: Непонятки с UDF & group by (Энкарито) 08/01/2004 - 12:27:22
Re: Непонятки с UDF & group by (Энкарито) 08/01/2004 - 12:28:34
Re: Извини!Те сообщения клоны , читай только одно (Энкарито) 08/01/2004 - 12:32:36
> Original message text:
> From: Саша - 08/01/2004 - 02:07:56
> Subject:Непонятки с UDF & group by
> -----------------
> У меня есть агрегатная функция pairalign, которая в качестве 2 параметров принимает последовательности символов. Ее суть - попарное сравнение последовательностей (дальше - неинтересно: генетика, выравнивание...)
>
> Последовательности хранятся как TEXT-поля. Смотрел содержимое таблицы - все с ними нормально.
> Для удобства вывел поля во временную таблицу, получив такое:
> id seq1 seq2
> -------------------------
> 1 some_seq1 some_seq3
> 2 some_seq1 some_seq4
> 3 some_seq2 some_seq3
> 4 some_seq2 some_seq4
>
> Известно, что агрегатная функция работает с группами. Прекрасно, здесь - 4 группы (если группировать по ключу id)
> Делаю select pairalign(seq1, seq2) from seq_tbl group by id;
> Выдает какой-то бред (я просто знаю, что должно получиться).
> В качестве теста изменяю функцию так, чтобы она показала, что подается на вход главной считающей функции. И удивленно обнаруживаю, что после
>
> memcpy( inputDataElem->seq1_, args->args[ 0 ], strlen( (char*)args->args[ 0 ] ) )
>
> в seq1_ оказывается считано в 2 раза больше данных, чем хранится в соотв. ячейке. Хотя с seq2_ при аналогичном memcpy все в порядке...
>
> Помнится, когда задавал еще какие-то дополнительные условия where - выводило и как положено. Но я не уловил суть и поэтому не запомнил. Бред, в общем, какой-то...
>
> Где же ошибка?
>
From: Энкарито - 08/01/2004 - 12:27:22
Subject:Непонятки с UDF & group by
-----------------
М-да! Ну хоть не на китайском. :)
А без group by работает как надо? или тоже самое?
И что храниться в пресловутом аргументе seq1_ если
там считано в два раза больше данных?
seq1_="то что нужно"+"что?", в качестве "что?" какой мусор,
мусор из другого аргумента? случайный мусор?
А вообще текстовые поля имеют одинаковую длину всегда али как?
Если да то может стоит использовать не strlen а константу?
strlen возвращает двойную длину?
если да попробуй посмотреть этот массив символов как hex или dec.
а именно глянь есть ли там спец символы типа 0x0A,0x0
(короче enter'ы разные и тому подобное, они могут быть проблемой для некоторых функций!!!), а также присутствует ли там символ окончания строки(0x0) там где он должен быть?
Если есть попробуй использовать свою функцию strlen_test() :)
которая считает символы до 0x0.
p.s. надеюсь поможет!
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
12493
|
|