Skip to content

Instantly share code, notes, and snippets.

@dng-dev
Created March 14, 2016 10:55
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dng-dev/10a47021820c367bf48e to your computer and use it in GitHub Desktop.
Save dng-dev/10a47021820c367bf48e to your computer and use it in GitHub Desktop.
SQL No Cache Support for Varien DB select
diff --git a/lib/Varien/Db/Select.php b/lib/Varien/Db/Select.php
index 4af0818..e7c01c5 100755
--- a/lib/Varien/Db/Select.php
+++ b/lib/Varien/Db/Select.php
@@ -59,6 +59,12 @@ class Varien_Db_Select extends Zend_Db_Select
const SQL_STRAIGHT_JOIN = 'STRAIGHT_JOIN';
/**
+ * define callback for rendering sql no cache support***
+ */
+ const SQL_NO_CACHE = 'sqlNoCache';
+
+
+ /**
* Class constructor
* Add straight join support
*
@@ -70,6 +76,11 @@ class Varien_Db_Select extends Zend_Db_Select
self::$_partsInit = array(self::STRAIGHT_JOIN => false) + self::$_partsInit;
}
+ //extend parts within SQL_NO_CACHE support
+ if (false === isset(self::$_partsInit[self::SQL_NO_CACHE])) {
+ self::$_partsInit = array(self::SQL_NO_CACHE => false) + self::$_partsInit;
+ }
+
parent::__construct($adapter);
}
@@ -471,4 +482,29 @@ class Varien_Db_Select extends Zend_Db_Select
$this->where($exists);
return $this;
}
+
+ /**
+ * add SQL_NO_CACHE to bypass querycache usage
+ *
+ * @param bool $flag
+ * @return Varien_Db_Select
+ */
+ public function sqlNoCache($flag = true)
+ {
+ $this->_parts[self::SQL_NO_CACHE] = (bool)$flag;
+ return $this;
+ }
+ /**
+ * render SQL_NO_CACHE to bypass querycache usage
+ *
+ * @param string $sql SQL query
+ * @return string
+ */
+ protected function _renderSqlNoCache($sql)
+ {
+ if ($this->_parts[self::SQL_NO_CACHE]) {
+ $sql .= ' SQL_NO_CACHE';
+ }
+ return $sql;
+ }
}
@dng-dev
Copy link
Author

dng-dev commented Mar 14, 2016

Example

/** @var Varien_Db_Select $select */
$collection->getSelect()->sqlNoCache(true);

SELECT SQL_NO_CACHE * FROM catalog_product_flat_1 AS e

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment