powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
27 сообщений из 27, показаны все 2 страниц
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33538277
stuav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем создал я тему про передачу данных через jdbc в бинарном виде, никто толком не отреагировал. Ну вот ловите пример.

Connection db; // The connection to the database
Statement st; // Our statement to run queries with
PreparedStatement ps;
Class.forName("org.postgresql.Driver"); // Load the driver
db = DriverManager.getConnection(url, usr, pwd);
//подсоединились, тут конечно в url, usr, pwd надо предварительно положить что надо.

st = db.createStatement();
st.executeUpdate("create table basic (a int2, b float4 )"); //создали табличку
ps = db.prepareStatement("insert into basic values (?,?)");

float tt=(float) 1.90000009;
System.out.println(" insert value=" + tt );
ps.setInt(1, 1);
ps.setFloat(2, tt);
ps.executeUpdate();
ps.close();

System.out.println("performing a query");
ResultSet rs = st.executeQuery("select a, b from basic");

rs.next();
int a = rs.getInt("a");
float b = rs.getFloat("b");
System.out.println("value from table=" + b);
rs.close();


/////под посгресом на выдача такая

insert value=1.9000001
performing a query
value from table=1.9
//// вот такая вот фигня, как с этим бороться??? насколько я сам копался в исходниках драйвера, бинарной передачи для простых типов float, double, int, тама нету в принципе, может ещё какие дрова бывают? я выходов вижу только два либо менять субд где дрова нормальные, либо сворачивать свой обьект в массив байтов и запихивать это в базу в тип bytea. Но тогда как бы с таким же успехом можно пихать в файл всё это.

ЗЫ: я знаю что этот эффект можно побороть увеличив точность преобразования из float в текст, это нужно делать как на клинете так и на сервере, в принципе я даже знаю как это сделать. Но на мой взгляд это вообще маразм получиться, и так конструкци уродская так ещё более уродские заплатки на это ставить надо. У кого какие мысли?
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33538286
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это фсе прафда, и здеся никто не откликнится то:
1. Юзать http://archives.postgresql.org/pgsql-jdbc/ - для поиска проблемы
2. Юзать тоже, но сформулировав проблему.
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33538351
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мужчина учите мат часть и не сбивайте с толку людей!!!

читайте как хранятся данные в компьютере
читайте про типы в постгресе
учитесь, учитесь, учитесь!!!!

если вам нужна умопомрачительная точность например такая 0.9000000000001 то юзайте не флоат

попробуйте задать вот такой запрос из какого нить пгадмина и посмотрите что выйдет

Код: plaintext
INSERT INTO public.test_sch (float_t /*float4*/, num_t/*numeric*/) VALUES ( 1 . 90000009 ,  0 . 9000000000001 );

я Вам уже писал что драйвера работают нормально только используйте их правильно!!!
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33538406
stuav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2vfabr.
мне не нужна умопомрачительная точность, проматчасть я думается знаю достаточно. Всего навсего требуется чтобы на выходе был то же набор битов что и на входе, и это не должно зависить от того как этот набор битов интрепретируется. Что вы на это скажете?
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33538409
stuav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrey DaeronЕсли это фсе прафда, и здеся никто не откликнится то:
1. Юзать http://archives.postgresql.org/pgsql-jdbc/ - для поиска проблемы
2. Юзать тоже, но сформулировав проблему.

Самое смешное что это почемуто проблемой ни кто не считает. Вывод сделан из общения нa irc://irc.freenode.net/#postgresql. Т.е. через libpq всё нормально, а в jdbc это просто не реализованно. (бинарный режим)
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33538416
stuav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vfabrмужчина учите мат часть и не сбивайте с толку людей!!!

читайте как хранятся данные в компьютере
читайте про типы в постгресе
учитесь, учитесь, учитесь!!!!

если вам нужна умопомрачительная точность например такая 0.9000000000001 то юзайте не флоат

попробуйте задать вот такой запрос из какого нить пгадмина и посмотрите что выйдет

Код: plaintext
INSERT INTO public.test_sch (float_t /*float4*/, num_t/*numeric*/) VALUES ( 1 . 90000009 ,  0 . 9000000000001 );

я Вам уже писал что драйвера работают нормально только используйте их правильно!!!

а по поводу мат части, не поскажете уважаемый чему равняются те числа которые привёл в качестве примера в hex виде а?? а я подскажу
1.90000009=1.90000009537=3FF33334
1.9= 1.89999997616=3FF33333

И чего это в последнем бите то отличие?? может быть это драйвер такой хороший, сами мат часть учите. У меня образование и работа связанна с вычислительной математикой.
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33538434
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я 5 постов переписал

лично мне удалось через ждбц драйвера положить число 0.9000000000001 в базу да я не использовал тип колонки флоат я взял нумерик

то что Вы математик только мешает (вот если бы инженер) и причем тут хексы? я думал компьютер работает на 1 и 0

и по Вашему же примеру джава тоже не должна Вас устраивать потому что
float tt=(float) 1.90000009;
System.out.println(" insert value=" + tt );
insert value=1.9000001
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33538448
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы наверное Александр +7-926-594-1685 студент или аспирант и у Вас ужастный юношеский максимализм :-) я кстати тоже туризмом увлекался только спортивным :-)
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33539075
stuav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я и не студент и не аспирант.

обьясните математику уважаемый инженер, может ли вообще назывться нормальной система хранения данных в которых отсылаеш один набор битов а получаеш другой?? конкретно 3FF33334 и 3FF33333
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33539732
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
значит даю ссылку на таблицу которая называется Numeric Types (числовые типы) я отправлял Вас к ней раз 5
http://www.postgresql.org/docs/8.0/interactive/datatype.html#DATATYPE-NUMERIC-TABLE

Вы используете тип float4 он же real найдите его в этой таблице и прочитайте ВСЕ колонки на строчке где описан тип real

напомню какое число вы хотели в него запихнуть 1.9000001

вот сопоставив эти 2 факта я надеюсь Вы как математик и человек с высшим образованием сможете догадаться в чем была Ваша ошибка ...

я мог сделать так с самого начала (ткнуть Вас носом), но обычно я привык общаться с вежливыми и умными людьми которым хватает просто намека на путь решения проблем

и еще что Вы мне своими хексами тычите? я в них неразбираюсь нолики и единички пожалуйста (это физический принцип действия компьютера) десятичная система пожалуйста (я в ней зарплату получаю) а хексы это не к нам убогим :-)
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33540201
stuav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vfabr
и еще что Вы мне своими хексами тычите? я в них неразбираюсь нолики и единички пожалуйста (это физический принцип действия компьютера) десятичная система пожалуйста (я в ней зарплату получаю) а хексы это не к нам убогим :-)

так сразу и надо было говорить.
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33540397
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну прояснилась ситуачия? почему меняются биты :-)))
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33540916
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
float имеет точность 6 знаков после запятой.
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33541777
stuav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hordifloat имеет точность 6 знаков после запятой.
спасибо, я знаю но здесь это не существенно. (хотя вообще то 7)
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33541908
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stuav Hordifloat имеет точность 6 знаков после запятой.
спасибо, я знаю но здесь это не существенно. (хотя вообще то 7)

Почему 7? Я про то что постгрес учитывает
http://www.postgresql.org/docs/8.0/interactive/datatype.html#DATATYPE-NUMERIC-TABLE

А почему здесь это не существенно? Постгрес получил float - обработал 6 знаков после запятой как и записано в документации, после этого выдал тебе правильное значение.
Или я что-то не понял?
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33542004
stuav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
7 - это по IEEE стандарту. точная фраза: The precision is approximately one part in 2**23; typically 7 decimal digits.

Почему я полагаю это не имеет отношения к делу - это потому что я всё таки полагаю что нужно по хорошему передавать число как набор битов, а не как его текстовое представление в десятичном формате. Передача в битовом режиме снимает вопрос как с потерей точности так и связанный с невозможность хешировать составные обьекты в которые входит число с плавающей точкой.

Хотя в принципе с точки зрения документции конечно правильно, СУБД работает с числом как с обьектом и обрабатывает его в рамках допустимых документацией. Но всё равно не аккуратненько как то.
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33542095
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
конечно те кто пишут базы данных и драйвера полные лохи вот Вас бы туда сразу бы все вопросы сняли бы
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33542746
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vfabrконечно те кто пишут базы данных полные лохив данном случае вы скорее правы, чем нет одни проблемы сруле чего стоят. очень срульные проблемы.
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33542938
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странный треп... Неужели трудно понять что
1) JDBC в Постгресе еще достаточно сырой.
2) Подавляющее большинство здешнего народа его не использует.
3) Тех кто использует JDBC точность его работы с float не колышет.
Видимо математическое образование( в отличии от инженерного ) не позволяет сделать простейший вывод : "Если драйвер херовый - спасет только медитация над его исходниками или ежедневные мольбы к девелоперам " 8))
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33543131
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stuav7 - это по IEEE стандарту. точная фраза: The precision is approximately one part in 2**23; typically 7 decimal digits.

Почему я полагаю это не имеет отношения к делу - это потому что я всё таки полагаю что нужно по хорошему передавать число как набор битов, а не как его текстовое представление в десятичном формате. Передача в битовом режиме снимает вопрос как с потерей точности так и связанный с невозможность хешировать составные обьекты в которые входит число с плавающей точкой.

Хотя в принципе с точки зрения документции конечно правильно, СУБД работает с числом как с обьектом и обрабатывает его в рамках допустимых документацией. Но всё равно не аккуратненько как то.

Этот топик мне напоминает одну вещь:

"зачем ты пришел?"
...
- Ты знаешь, кто я?
- Да.
- Как ты мог догадаться?
- По тому, как ты начал разговор. Ты философ.
- Да, я философ. А ты - сантехник.
- Да, я сантехник. Hо почесать языком я тоже люблю. Где тут у вас бачок засорился?
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33543245
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stuavХотя в принципе с точки зрения документции конечно правильно, СУБД работает с числом как с обьектом и обрабатывает его в рамках допустимых документацией. Но всё равно не аккуратненько как то.
У PostgreSQL есть недостаток - он аккадемический. Т.е. если в стандарте написано, что без ORDER BY данные выводятся в произвольном порядке - то так оно и будет :) И т.д. Если в стандарте написано 7 знаков после запятой - значит так оно и будет, если в документации не указано другое.
Из более интерестных примеров - работа с датами и интервалами. Более правильной работы с этим типом я не встречал, хотя в некоторых моментах жутко неудобно, и приходится изобретать странные вещи.
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33543481
stuav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShweikСтранный треп... Неужели трудно понять что
1) JDBC в Постгресе еще достаточно сырой.
2) Подавляющее большинство здешнего народа его не использует.
3) Тех кто использует JDBC точность его работы с float не колышет.
Видимо математическое образование( в отличии от инженерного ) не позволяет сделать простейший вывод : "Если драйвер херовый - спасет только медитация над его исходниками или ежедневные мольбы к девелоперам " 8))

Позволяет всё позволяет, даже в голову пришло сразу простейшее решение - СУБД поменять, благо всё ещё пока на этапе проектировния.
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33544987
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stuav
Позволяет всё позволяет, даже в голову пришло сразу простейшее решение - СУБД поменять, благо всё ещё пока на этапе проектировния.
Угу.... главное выбрать помаститее ну типа Оракл *)) а то
натолкнётесь гомологичные грабельки в FireBird/MySQL 8)
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33545386
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shweik stuav
Позволяет всё позволяет, даже в голову пришло сразу простейшее решение - СУБД поменять, благо всё ещё пока на этапе проектировния.
Угу.... главное выбрать помаститее ну типа Оракл *)) а то
натолкнётесь гомологичные грабельки в FireBird/MySQL 8)
Да чего все на Оракуле помешались - ну нету в нем ничего хорошего, кроме афигенной масштабируемости и расширяемости. А так - такие же сырые дрова типа ODBC и т.д. в которых есть свои тараканы которые НЕ лечатся даже разработчиками. Пример - были проблемы с деланьем запроса обновляемым через ADO+ODBC. Не получилось, хотя почему - ниизвестно.
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33545725
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey Daeron...Да чего все на Оракуле помешались - ну нету в нем ничего хорошего, кроме афигенной масштабируемости и расширяемости.

Там даже этого нет. В смысле - офигенной.

stuavПозволяет всё позволяет, даже в голову пришло сразу простейшее решение - СУБД поменять, благо всё ещё пока на этапе проектировния.

Ну попробуй что-ли IBM DB2.

А вообще доку читать надо. Программа должна работать так, как написано в документации, а не так, как приспичило пользователю.
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33546312
stuav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кувалдин Роман
stuavПозволяет всё позволяет, даже в голову пришло сразу простейшее решение - СУБД поменять, благо всё ещё пока на этапе проектировния.

Ну попробуй что-ли IBM DB2.

А вообще доку читать надо. Программа должна работать так, как написано в документации, а не так, как приспичило пользователю.

Да, но здравый смысл ещё ни кто не отменял, если я вижу автомобиль современный я всё таки предпологаю что километров 150 в час он развивает, а не ездит со скоростью пешехода.
...
Рейтинг: 0 / 0
и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
    #33546517
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stuav Кувалдин Роман
stuavПозволяет всё позволяет, даже в голову пришло сразу простейшее решение - СУБД поменять, благо всё ещё пока на этапе проектировния.

Ну попробуй что-ли IBM DB2.

А вообще доку читать надо. Программа должна работать так, как написано в документации, а не так, как приспичило пользователю.

Да, но здравый смысл ещё ни кто не отменял, если я вижу автомобиль современный я всё таки предпологаю что километров 150 в час он развивает, а не ездит со скоростью пешехода.

Отменял. Читай доку. У Caterpillar есть модели грузовиков этого года выпуска, но они не ездят со скоростью Ferrari.

И вообще это все флейм.
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / и как после этого юзать PostrgeSQL? (особенности работы jdbc драйвера)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]