docs: private void readColDefinitions() {
  		
  		// VALUE COLUMNS AND COLUMNS THAT ARE NOT PART OF THE PRIMARY KEY
  		Statement query = QueryBuilder.select().from("system", "schema_columns")
  				.where(eq("keyspace_name", keyspaceName))
  				.and(eq("columnfamily_name", cfName));
  		
  		ResultSet rs = session.execute(query);
  		List<Row> rows = rs.all();
  		if (rows != null && rows.size() > 0) {
  			
  			List<CqlColumnDefinitionImpl> tmpList = new ArrayList<CqlColumnDefinitionImpl>();
  			
  			for (Row row : rows) {
  				CqlColumnDefinitionImpl colDef = new CqlColumnDefinitionImpl(row);
  				switch (colDef.getColumnType()) {
  				case partition_key:
  					partitionKeyList.add(colDef);
  					allColumnsDefinitionList.add(colDef);
  					break;
  				case clustering_key:
  					tmpList.add(colDef);
  					allColumnsDefinitionList.add(colDef);
  					break;
  				case regular:
  					regularColumnList.add(colDef);
  					allColumnsDefinitionList.add(colDef);
  					break;
  				case compact_value:
  					regularColumnList.add(colDef);
  					allColumnsDefinitionList.add(colDef);
  					break;
  				}
  			}
  
  			Collections.sort(tmpList);
  			clusteringKeyList.addAll(tmpList);
  			tmpList = null;
  			
  			List<String> allPrimaryKeyColNames = new ArrayList<String>();
  			for (ColumnDefinition colDef : partitionKeyList) {
  				allPrimaryKeyColNames.add(colDef.getName());
  			}
  			for (ColumnDefinition colDef : clusteringKeyList) {
  				allPrimaryKeyColNames.add(colDef.getName());
  			}
  			
  			allPkColNames = allPrimaryKeyColNames.toArray(new String[allPrimaryKeyColNames.size()]);
  		}
  	}