protected function _postgresqlArrayDecode($data, $start = 0)
	{
		if (empty($data) || $data[0] != '{') {
			return null;
		}

		$result = [];

		$string = false;
		$quote = '';
		$len = strlen($data);
		$v = '';

		for ($i = $start + 1; $i < $len; $i++) {
			$ch = $data[$i];

			if (!$string && $ch == '}') {
				if ($v !== '' || !empty($result)) {
					$result[] = $v;
				}
				break;
			} else if (!$string && $ch == '{') {
				$v = $this->_postgresqlArrayDecode($data, $i);
			} else if (!$string && $ch == ',') {
				$result[] = $v;
				$v = '';
			} else if (!$string && ($ch == '"' || $ch == "'")) {
				$string = true;
				$quote = $ch;
			} else if ($string && $ch == $quote && $data[$i - 1] == "\\") {
				$v = substr($v, 0, -1) . $ch;
			} else if ($string && $ch == $quote && $data[$i - 1] != "\\") {
				$string = false;
			} else {
				$v .= $ch;
			}
		}

		return $result;
	}