Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
12493



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |