refactor: extract function cache_columns
implement operator `[[` (#5)