{"record":{"id":"4f484765a1689d4a","repo":"sqlmapproject/sqlmap","slug":"ordered-poc-unavailable-membership-comparator-has","errorCode":null,"errorMessage":"ordered PoC unavailable: membership comparator has no '>' form","messagePattern":"ordered PoC unavailable: membership comparator has no '>' form","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"extra/esperanto/enumeration.py","lineNumber":777,"sourceCode":"                    except OracleUndecided:\n                        pass\n        return self._castPreserves\n\n    def poc(self, expr, position=1, gt=64):\n        \"\"\"Emit a clean, pasteable boolean payload for ONE probe (the exploitation\n        primitive), so a tester can drop it into Burp without re-running discovery.\"\"\"\n        one = self._sub(expr, position, 1)\n        if self.dialect.compare == \"code\" and self.dialect.charcode:\n            # numeric code comparison -> render through the DISCOVERED comparator, so the PoC\n            # works on the very target where '>' was blocked (BETWEEN / operator-free rung)\n            code = self.dialect.charcode[1].format(expr=one)\n            if self._comparator == \"gt\":\n                return \"%s>%d\" % (code, gt)\n            if self._comparator == \"between\":\n                return \"%s BETWEEN %d AND %d\" % (code, gt + 1, 1 << 62)\n            if self._cmpTemplate is not None:\n                return self._cmpTemplate.format(expr=code, n=gt)\n            raise RuntimeError(\"ordered PoC unavailable: membership comparator has no '>' form\")\n        # hex / collation / ordinal compare strings or wrapped values with '>'; if '>' was\n        # blocked (comparator isn't 'gt') there is NO equivalent renderer for these text modes\n        # -> refuse rather than emit a predicate the target already rejected.\n        if self._comparator != \"gt\":\n            raise RuntimeError(\"ordered PoC unavailable: '>' blocked and %s mode has no operator-free form\" % self.dialect.compare)\n        if self.dialect.compare == \"hex\" and self.dialect.hexfn:\n            return \"%s>'%02X'\" % (self.dialect.hexfn[1].format(expr=one), gt)\n        if self.dialect.compare == \"collation\" and self.dialect.binwrap:\n            w = self.dialect.binwrap[1]\n            return \"%s>%s\" % (w.format(x=one), w.format(x=self._lit(chr(gt))))\n        if self.dialect.compare in (\"equality\", \"equality-ci\"):\n            # equality mode was chosen BECAUSE ordering isn't trustworthy - don't\n            # fabricate a `>` predicate the target's collation may not honour\n            raise RuntimeError(\"ordered PoC unavailable in equality-only compare mode\")\n        return \"%s>%s\" % (one, self._lit(chr(gt)))\n\n    def strategy(self):\n        \"\"\"Freeze the discovered dialect into an immutable InferenceStrategy - the","sourceCodeStart":759,"sourceCodeEnd":795,"githubUrl":"https://github.com/sqlmapproject/sqlmap/blob/0a35b20e3953d341be6c7ac75ccb0b3362540c8d/extra/esperanto/enumeration.py#L759-L795","documentation":"Error \"ordered PoC unavailable: membership comparator has no '>' form\" thrown in sqlmapproject/sqlmap.","triggerScenarios":"Thrown at extra/esperanto/enumeration.py:777 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0a35b20e3953d341be6c7ac75ccb0b3362540c8d","analyzedAt":"2026-08-26T23:02:52.002Z","schemaVersion":2},"datasetVersion":"2026-08-27T03:17:27.898Z"}