Github user kchilton2 commented on a diff in the pull request: https://github.com/apache/incubator-rya/pull/251#discussion_r153271360 --- Diff: extras/rya.pcj.fluo/pcj.fluo.app/src/main/java/org/apache/rya/indexing/pcj/fluo/app/observers/TripleObserver.java --- @@ -70,53 +68,50 @@ public void process(final TransactionBase tx, final Bytes brow, final Column col // Get string representation of triple. final RyaStatement ryaStatement = IncUpdateDAO.deserializeTriple(brow); log.trace("Transaction ID: {}\nRya Statement: {}\n", tx.getStartTimestamp(), ryaStatement); + log.trace("Beginging to process triple."); final String triple = IncUpdateDAO.getTripleString(ryaStatement); - // Iterate over each of the Statement Patterns that are being matched against. - final RowScanner spScanner = tx.scanner() - .over(Span.prefix(SP_PREFIX)) - - // Only fetch rows that have the pattern in them. There will only be a single row with a pattern per SP. - .fetch(FluoQueryColumns.STATEMENT_PATTERN_PATTERN) - .byRow() - .build(); + Set<String> spIDs = SP_ID_CACHE.getStatementPatternIds(tx); //see if triple matches conditions of any of the SP - for (final ColumnScanner colScanner : spScanner) { - // Get the Statement Pattern's node id. - final String spID = colScanner.getsRow(); - + for (String spID: spIDs) { // Fetch its metadata. final StatementPatternMetadata spMetadata = QUERY_METADATA_DAO.readStatementPatternMetadata(tx, spID); + log.trace("Retrieved metadata: {}", spMetadata); + // Attempt to match the triple against the pattern. final String pattern = spMetadata.getStatementPattern(); final VariableOrder varOrder = spMetadata.getVariableOrder(); final String bindingSetString = getBindingSet(triple, pattern, varOrder); + log.trace("Created binding set match string: {}", bindingSetString); + // Statement matches to a binding set. if(bindingSetString.length() != 0) { // Fetch the triple's visibility label. final String visibility = tx.gets(brow.toString(), FluoQueryColumns.TRIPLES, ""); // Create the Row ID for the emitted binding set. It does not contain visibilities. - final String row = spID + NODEID_BS_DELIM + bindingSetString; - final Bytes rowBytes = Bytes.of( row.getBytes(Charsets.UTF_8) ); +// final String row = spID + NODEID_BS_DELIM + bindingSetString; --- End diff -- Remove commented out code.
---