Well, a little more information would be useful like:
Ops.. yes sure.. sorry about that.
1. What is the PostgreSQL version?
PostgreSQL 9.2
2. What is the O/S?
Linux Centos 6.7 64 bits
3. What is the structure of gorfs.inode_segments?
Table inode_segments: (I'll leave the comments to help)
CREATE TABLE gorfs.inode_segments
(
st_ino "gorfs"."ino_t" NOT NULL, -- Inode number the segment belongs to. alongside segment_index, it forms the table's primary key to ensure uniqueness per relevant scope
segment_index "gorfs"."pathname_component" NOT NULL, -- See st_no's column description for further details. The meaning of this column varies based on the host inode type:...
st_ino_target "gorfs"."ino_t", -- Target inode number. Meaningful for directory inode segments (objects in the directory)
full_path "gorfs"."absolute_pathname", -- Exploded absolute canonical path for quick lookups. Meaningful only for directory inode segments (objects in the directory)
segment_data "bytea", -- Actual data segment. Meaningful only for S_IFLNK and S_IFREG....
CONSTRAINT pk_inode_segments PRIMARY KEY ("st_ino", "segment_index"),
CONSTRAINT fk_host_inode_must_exist FOREIGN KEY (st_ino)
REFERENCES gorfs.inodes (st_ino) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_target_inode_must_exist FOREIGN KEY (st_ino_target)
REFERENCES gorfs.inodes (st_ino) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT uc_no_duplicate_full_paths UNIQUE ("full_path"),
CONSTRAINT cc_only_root_can_be_its_own_parent CHECK ("st_ino_target" IS NULL OR "st_ino"::bigint <> "st_ino_target"::bigint OR "st_ino"::bigint = 2)
)
Table gorfs.inodes:
CREATE TABLE gorfs.inodes
(
st_dev "gorfs"."dev_t" DEFAULT NULL::bigint, -- ID of device containing file. Meaningless in this implementation....
st_ino "gorfs"."ino_t" NOT NULL DEFAULT "nextval"('"gorfs"."inodes_st_ino_idseq"'::"regclass"), -- Inode number....
st_mode "gorfs"."mode_t" NOT NULL, -- File type/mode bits....
st_nlink "gorfs"."nlink_t" NOT NULL, -- Number of hard links (directory segments) pointing to this inode. See stat(2) manual page for details (man 2 stat)
st_uid "gorfs"."uid_t" NOT NULL, -- User ID that owns the file. See stat(2) manual page for details (man 2 stat)
st_gid "gorfs"."gid_t" NOT NULL, -- Group ID that owns the file.See stat(2) manual page for details (man 2 stat)
st_rdev "gorfs"."dev_t", -- Device number (currently we don't support device files). See stat(2) manual page for details (man 2 stat)
st_size "gorfs"."off_t", -- File size, if applicable. See stat(2) manual page for details (man 2 stat)
st_blksize "gorfs"."blksize_t", -- Block size for I/O. Meaningless here, hard coded to 512. See stat(2) manual page for details (man 2 stat)
st_blocks "gorfs"."blkcnt_t", -- Number of allocated blocks. Meaningless here, but calculated from block size. See stat(2) manual page for details (man 2 stat)
st_atime "gorfs"."time_t" NOT NULL, -- Timestamp of last access. Stored as a timestamp as opposed to unix TS. See stat(2) manual page for details (man 2 stat)
st_mtime "gorfs"."time_t" NOT NULL, -- Timestamp of last modification. Stored as a timestamp as opposed to unix TS. See stat(2) manual page for details (man 2 stat)
st_ctime "gorfs"."time_t" NOT NULL, -- Timestamp of last change. Stored as a timestamp as opposed to unix TS. See stat(2) manual page for details (man 2 stat)
checksum_md5 "md5_hash", -- MD5 checksum of the file. Supplied by the application as the DB might not even see the payload
media_subtype_id integer, -- Reference to MIME type (see FK constraint). We can't support all media types but unknow types can be stored as application/octet-stream
external_size "gorfs"."off_t", -- For symlinks only. Meaningful for fat links only: total size of the fat link target. Null for normal symlinks
CONSTRAINT pk_inodes PRIMARY KEY ("st_ino"),
CONSTRAINT fk_media_subtype_must_exist FOREIGN KEY (media_subtype_id)
REFERENCES public.media_subtypes (media_subtype_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT cc_mount_devices_not_supported CHECK ("st_dev" IS NULL)
)
4. Did you do an ANALYZE table gorfs.inode_segments after you created the index?
Yes.. actually the index was already created.