parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Проблемы при работе с PostgreSQL

egr 15.12.2002 09:10

Столкнулся с парой проблем при работе с СУБД PostgreSQL.

1. Когда СУБД работает под FreeBSD а Apache под Windows, невозможно в базу внести данные размером превышающие 8049 байт (8050 байт уже нельзя :)) интересно что это ограничение позволяет вставить 99 полных строк по 80 символов (100 уже не катит) ну и в 100-й строке не более 30 символов, если больше сервер валится в error 500 и в логе выскакивает буквально следующее:
[Sun Dec 15 08:23:21 2002] [error] [client 127.0.0.1] Premature end of script headers: d:/apache/cgi-bin/parser3.exe
[Sun Dec 15 08:23:21 2002] [error] [client 127.0.0.1]

[Sun Dec 15 08:23:21 2002] [error] [client 127.0.0.1] This application has requested the Runtime to terminate it in an unusual way.

[Sun Dec 15 08:23:21 2002] [error] [client 127.0.0.1] Please contact the application's support team for more information.
Если Apache работает тоже под FreeBSD все нормально, т.е. данные размером более 8049 байт вставляются. Похоже существует проблема в драйвере PostgreSQL под Windows.

2. Не могу вставить/обновить в БД текст содержащий символ \. При вставке/обновлении возникает ошибка:
ERROR:  parser: parse error at or near "\"
Понимаю что дело в taint/untaint, но что то нифига не получается. Лежу в доку читаю что там написано:
Также Parser выполняет ряд автоматических untaint преобразований:
вид что преобразуется

sql тело SQL-запроса

table текст при создании таблицы или добавлении в нее записи

xml XML код при создании объекта класса xdoc
Для вида sql написано следующее:
sql в зависимости от SQL сервера
для Oracle/ODBC меняется ' на ''
для PgSQL меняется ' на '' и \ на \\
для MySQL делается средствами самого MySQL
т.е. насколько я понял для PostgreSQL символ \ должен в теле sql запроса автоматически меняться на \\ чтобы не было ошибок, но они есть. Я перепробовал такие варианты:
	^void:sql{
		update
			...
		set
			...
			txt = '$form:txt'
			...
	}

	^void:sql{
		update
			...
		set
			...
			txt = '^taint[as-is][$form:txt]'
			...
	}

	^void:sql{
		update
			...
		set
			...
			txt = '^taint[sql][$form:txt]'
			...
	}

	^void:sql{
		update
			...
		set
			...
			txt = '^untaint[as-is]{$form:txt}'
			...
	}

	^void:sql{
		update
			...
		set
			...
			txt = '^untaint[sql]{$form:txt}'
			...
	}
Ни один не работает.

  • Проблемы при работе с PostgreSQL, egr 15.12.2002 09:10
    • Ответ, Александр Петросян (PAF) [M] 15.12.2002 11:58