@pgsql

Страница 193 из 1062
blkmrkt
14.12.2016
20:31:56
ну и хрень, обнулил пейдж 92804, а пейдж 92803 остался тем же

Петр
14.12.2016
20:32:18
.

blkmrkt
14.12.2016
20:32:26
Ну на 1 блок смещение
так я ж 8к блоками и обнуляю...

Google
Аггей
14.12.2016
20:34:24
Будем считать, что 1й блок в первом файле таблицы - служебный

И несчитается

Но, ты уже следующий затер - соответсвенно его затирать бессмыслено

Предлагаю затереть блок 92816+1

blkmrkt
14.12.2016
20:35:54
Будем считать, что 1й блок в первом файле таблицы - служебный
но все равно блоки с разными оффсетами не должны биться чисткой соседей, правильно?

Предлагаю затереть блок 92816+1
затер 92816 и 92817, правильно?

Аггей
14.12.2016
20:37:32
Нет

Вместо 92816 - по моей теории ты затер 92815

Соответственно, чтобы затереть 92816 - тебе нужно в seek сделать +1

blkmrkt
14.12.2016
20:38:31
ох точно

Аггей
14.12.2016
20:39:39
+ я не уверен, что пустые блоки - целиком из 0

Петр
14.12.2016
20:41:05
тут в чем то другом проблема видимо мне кажется, что затираются именно те страницы, какие он и указывает

Аггей
14.12.2016
20:41:09
Тут можно провести эксперемент. На чисто БД - создать таблицу... написать в нее записей.... удалить записи... кроме последней... отвакуумить... и поглядеть что записано в "пустых" блоках

Google
Аггей
14.12.2016
20:42:10
Даже можно сдампить пустой блок (если он отличается от 0) и этим шаблоном уже затирать битые блока

Петр
14.12.2016
20:43:52
oid`ы есть в таблице?

blkmrkt
14.12.2016
20:44:17
странно почему на той же самой ошибке туплы с пейджа перестают читаться, почему не стринги или интегеры?

опача, работает

короче убрал notrunc из dd и bs=8k написал

все, битых таймштампов в таблице нет ?

только почему-то записей в таблице 3,3 миллиона вместо 860милл, но это не страшно

Петр
14.12.2016
20:54:44
Замени сохраненным

blkmrkt
14.12.2016
20:55:27
Петр
14.12.2016
20:55:47
Посмотри файл

Какого он размера

Айтуар
14.12.2016
20:56:38
Вместо терабайта остался гигабайт))

blkmrkt
14.12.2016
20:56:54
он видимо дальше этого файла не читает теперь

Петр
14.12.2016
20:57:35
blkmrkt
14.12.2016
20:58:52
ок, заменил

Петр
14.12.2016
20:59:16
Вот теперь начинай все с начала

Google
Петр
14.12.2016
20:59:34
Но лучше завтра, утро вечера мудреннее

blkmrkt
14.12.2016
20:59:53
точно, завтра лучше продолжить, а то я таки пиво выпил

Sergey
14.12.2016
20:59:55
Ну нет, интересно же

Аггей
14.12.2016
21:00:07
Следующий блок затирать не пробовал?

blkmrkt
14.12.2016
21:00:19
хорошо что есть решение - ходишь смотришь ctid, заполняешь нулями этот пейдж в файле, и так далее

в том же порядке в котором ошибки кидаются

Аггей
14.12.2016
21:00:52
Ну это я понял. Всмысле мою теорию не проверил?

Петр
14.12.2016
21:01:01
Возможно, что это решение не для твоего случая. Надо исследовать

На этом я откланиваюсь, удачи

blkmrkt
14.12.2016
21:04:03
Ну это я понял. Всмысле мою теорию не проверил?
не совсем понял суть. Допустим что нужно добавлять 1 блок в команде dd, чтоб затереть нужный пейдж. Но я же прошел уже и затер штук 10 пейджев сверху вниз, и ошибка invalid timestamp появляется сразу в предыдущем пейдже лишь после затирания следующего пейджа

я ранее селектил все записи из 92803, все было ок. затер 92804, и появляется ошибка invalid timestamp на 92803

Аггей
14.12.2016
21:05:22
Так она "ищет хорошие данные" возможно и натыкается на тот самый плохой блок.... и считает что ошибка тянется еще с зануленого

Эксперемент жеж

blkmrkt
14.12.2016
21:06:00
может у постгреса служебный оффсет не 8к, а меньше?

единственное объяснение по-моему, либо с dd что-то не то делаю

Аггей
14.12.2016
21:06:48
8К - так как реальные данные начинаются после этого

Возми погляди любой первый файл таблицы - с самого начала hex редактором

Darafei
14.12.2016
21:08:51
господа, вопрос

blkmrkt
14.12.2016
21:09:03
На этом я откланиваюсь, удачи
спасибо за помощь, теперь вижу что можно сделать

Google
Darafei
14.12.2016
21:09:53
хочу числовой тип для котиков и для яблочек, причём так, чтобы 1 котик не был равен одному яблоку, а всё сравнение бросало эксепшен

Admin
ERROR: S client not available

Darafei
14.12.2016
21:10:36
пробовал типами, но нет, там котик равен яблоку: https://gist.github.com/Komzpa/f5350a5ef34570447eb01d08e9055768

Аггей
14.12.2016
21:11:28
Хм... Я видимо удачно таблицы открывал - штук 5 поглядел - везде одинаковое начало

Darafei
14.12.2016
21:14:14
Однако странного хотите. Простите, а яблочко это какое число?
колонки хочу типизированные , чтобы количество яблок нельзя было на количество котиков поджойнить без явных усилий

Аггей
14.12.2016
21:14:40
Ааа. Не сразу понял назначение сего

blkmrkt
14.12.2016
21:22:25
я тож думал, но разве не тосты для этого есть?

Аггей
14.12.2016
21:22:57
А какой размер записи?

blkmrkt
14.12.2016
21:23:31
А какой размер записи?
да разный, размер комментария вконтакте плюс таймштампы и айдишники

Павел П.
15.12.2016
08:13:00
Чат, вопрос

А нет ли у кого в закладках/шпаргалках функции превращающей строку типа 1,3-6,9,10,12-19,21-26,28,29,3 В 1 3 4 5 6 9 10 и т.д.

raksita
15.12.2016
08:15:17
гм, комбинация string_to_array и unnest не покатит?

Павел П.
15.12.2016
08:16:33
стринг в аррей уже попробовал, она по запятым-то легко разделит, а вот как между тире думаю..

Denis
15.12.2016
08:17:15
на петоне напиши

raksita
15.12.2016
08:17:26
аа, ну тогда regexp_split_to_table

Павел П.
15.12.2016
08:17:42
это же чат про эскуэль

raksita
15.12.2016
08:17:48
Павел П.
15.12.2016
08:17:50
аа, ну тогда regexp_split_to_table
погуглю, спасибо

raksita
15.12.2016
08:18:00
погуглю, спасибо
https://www.postgresql.org/docs/current/static/functions-string.html

Google
raksita
15.12.2016
08:18:17
только версию не забудьте переключить

Павел П.
15.12.2016
08:19:02
эт само собой

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

Айтуар
15.12.2016
08:22:31
А нет ли у кого в закладках/шпаргалках функции превращающей строку типа 1,3-6,9,10,12-19,21-26,28,29,3 В 1 3 4 5 6 9 10 и т.д.
А смысл? Если всё равно идёт всё подряд. Просто найди минимум и максимум и сделай serial или типа того.

lemi
15.12.2016
08:22:57
прикольная задача

raksita
15.12.2016
08:23:27
но все равно надо придумать как он промежутки заполнять будет. чет сложна
промежутки? там же регулярка, можно что угодно описать

Айтуар
15.12.2016
08:24:06
lemi
15.12.2016
08:24:45
сначала разлить потом через join Заполнить

raksita
15.12.2016
08:26:06
SELECT regexp_split_to_table ('1,3-6,9,10,12-19,21-26,28,29,3', '\D'); regexp_split_to_table ----------------------- 1 3 6 9 10 12 19 21 26 28 29 3 (12 rows)

Павел П.
15.12.2016
08:28:27
SELECT regexp_split_to_table ('1,3-6,9,10,12-19,21-26,28,29,3', '\D'); regexp_split_to_table ----------------------- 1 3 6 9 10 12 19 21 26 28 29 3 (12 rows)
это да, и обычным string_to_array можно получить. а вот дальше записи 4 5 получить?

Страница 193 из 1062