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

Петр
14.12.2016
20:32:18
.

blkmrkt
14.12.2016
20:32:26

Google

Аггей
14.12.2016
20:34:24
Будем считать, что 1й блок в первом файле таблицы - служебный
И несчитается
Но, ты уже следующий затер - соответсвенно его затирать бессмыслено
Предлагаю затереть блок 92816+1

blkmrkt
14.12.2016
20:35:54

Аггей
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
Замени сохраненным

Айтуар
14.12.2016
20:55:26

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

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

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

Павел П.
15.12.2016
08:23:12

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 получить?