Index: branches/5.1.x/core/kernel/kbase.php =================================================================== diff -u -r13143 -r13168 --- branches/5.1.x/core/kernel/kbase.php (.../kbase.php) (revision 13143) +++ branches/5.1.x/core/kernel/kbase.php (.../kbase.php) (revision 13168) @@ -1,6 +1,6 @@ escapeField($field_options['option_title_field']) . ',' . $this->escapeField($field_options['option_key_field']); $sql = sprintf($field_options['options_sql'], $select_clause); - $dynamic_options = $this->Conn->GetCol($sql, preg_replace('/^.*?\./', '', $field_options['option_key_field'])); + if (array_key_exists('serial_name', $field_options)) { + // try to cache option sql on serial basis + $cache_key = 'sql_' . crc32($sql) . '[%' . $field_options['serial_name'] . '%]'; + $dynamic_options = $this->Application->getCache($cache_key); + + if ($dynamic_options === false) { + $this->Conn->nextQueryCachable = true; + $dynamic_options = $this->Conn->GetCol($sql, preg_replace('/^.*?\./', '', $field_options['option_key_field'])); + $this->Application->setCache($cache_key, $dynamic_options); + } + } + else { + // don't cache options sql + $dynamic_options = $this->Conn->GetCol($sql, preg_replace('/^.*?\./', '', $field_options['option_key_field'])); + } + $options_hash = array_key_exists('options', $field_options) ? $field_options['options'] : Array (); $field_options['options'] = array_merge_recursive2($options_hash, $dynamic_options); }