Optimal Filter Placement in SPARQL Queries - jena

One of the optimizations performed by JenaARQ is to: "Place filters close to where their dependency variables are defined".
This causes the following Query Plan:
(filter (exprlist (|| (|| (isIRI ?Y) (isBlank ?Y)) (!= (datatype ?Y) <http://example.com/onto/rdf#structure>)) (|| (|| (isIRI ?Z) (isBlank ?Z)) (!= (datatype ?Z) <http://example.com/onto/rdf#structure>)))
(bgp
(triple ?X <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://swat.cse.lehigh.edu/onto/univ-bench.owl#Student>)
(triple ?Y <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://swat.cse.lehigh.edu/onto/univ-bench.owl#Faculty>)
(triple ?Z <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://swat.cse.lehigh.edu/onto/univ-bench.owl#Course>)
(triple ?X <http://swat.cse.lehigh.edu/onto/univ-bench.owl#advisor> ?Y)
(triple ?Y <http://swat.cse.lehigh.edu/onto/univ-bench.owl#teacherOf> ?Z)
(triple ?X <http://swat.cse.lehigh.edu/onto/univ-bench.owl#takesCourse> ?Z)
)))
To be transformed into the following:
(sequence
(filter (|| (|| (isIRI ?Z) (isBlank ?Z)) (!= (datatype ?Z) <http://example.com/onto/rdf#structure>))
(sequence
(filter (|| (|| (isIRI ?Y) (isBlank ?Y)) (!= (datatype ?Y) <http://example.com/onto/rdf#structure>))
(bgp
(triple ?X <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://swat.cse.lehigh.edu/onto/univ-bench.owl#Student>)
(triple ?Y <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://swat.cse.lehigh.edu/onto/univ-bench.owl#Faculty>)
))
(bgp (triple ?Z <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://swat.cse.lehigh.edu/onto/univ-bench.owl#Course>))))
(bgp
(triple ?X <http://swat.cse.lehigh.edu/onto/univ-bench.owl#advisor> ?Y)
(triple ?Y <http://swat.cse.lehigh.edu/onto/univ-bench.owl#teacherOf> ?Z)
(triple ?X <http://swat.cse.lehigh.edu/onto/univ-bench.owl#takesCourse> ?Z)
)))
It turns out that while the original query plan runs in milliseconds the "optimized" query plan takes about 7 hours to be concluded.
Does JenaARQ consider any statistics for optimizing the filter placement in the query plan?
I'm using Jena 3.12.0.

Related

How to remove contfoot, conthead, caption in longtblr package

I want to remove contfoot, conthead and caption in tabularray package (I used longtblr).
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T5]{fontenc}
\usepackage{tabularray}
\usepackage{parskip}
\usepackage[fontsize=14pt]{scrextend}%font mặc định
\usepackage[paperheight=29.7cm,paperwidth=21cm,right=2cm,left=3cm,top=2cm,bottom=2cm]{geometry}%font a4
\usepackage[bookmarks]{hyperref}%TẠO BOOKMARK PDF
\usepackage{bookmark}
\usepackage{mathptmx}%ngôn ngữ time new roman
\usepackage{titlesec}%chinh section
\titleformat{\section}[block]{\normalfont\fontsize{16pt}{0}\bfseries\filcenter}{}{1em}{}
\titlespacing\section{0}{0pt}{0pt}
\usepackage{ragged2e}%căn đều 2 bên
\usepackage{fancyhdr}
\fancyhf{}
\fancyhead[C]{\small\thepage}
\begin{document}
\section*{DANH SÁCH NGƯỜI MỪNG PHONG BÌ CƯỚI SƠN - DIỄM}
\noindent
\begin{longtblr}{width=1\linewidth,rowhead=1,hlines,vlines,
colspec={X[1,c]X[4,l]X[2,c]X[2,c]X[2,c]},
colsep=6pt,
rowsep=3pt,
rows={1.5cm,m},row{1}={font=\bfseries,c}}
STT&Tên người& {Số tiền\\(Nghìn đồng)}&Ngày xưa có đi không&Đi bao nhiêu\\
1& Chị Nhung Kd Phúc Yên&300\\
2& Chị Nhàn Kd Tam Dương&300\\
3& E Hiền Kd Sản Nhi&300\\
4& Chị Nga Kd Phúc Yên&300\\
5& Chị Vân Viện 9&500\\
6& Chị Dung Vĩnh Tường&500\\
7& Chị Hằng kd Phúc Yên&200\\
8& Lương Quyết&1000&Có&500\\
9& Chị Huyền Anh&1000\\
10&Anh Hải Nội A&300& Có&300\\
11&A Tùng Dương&500\\
12&C Huyền KD&300\\
13&A Thành KD&200\\
14& Thiệu CVP&500\\
15&Linh Chồn&300& Có&300\\
16& Xuyến A1&200& Có \\
17& Phượng A1& 200& Có\\
18&Nguyệt A1&300&Có \\
19&Đức Anh UB&200&Không \\
\end{longtblr}
\end{document}
You can use
\DefTblrTemplate{contfoot-text}{default}{}
\DefTblrTemplate{conthead-text}{default}{}
\DefTblrTemplate{caption}{default}{}
\DefTblrTemplate{conthead}{default}{}
\DefTblrTemplate{capcont}{default}{}
to redefine the templates.
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T5]{fontenc}
\usepackage{tabularray}
\usepackage{parskip}
\usepackage[fontsize=14pt]{scrextend}%font mặc định
\usepackage[paperheight=29.7cm,paperwidth=21cm,right=2cm,left=3cm,top=2cm,bottom=2cm]{geometry}%font a4
\usepackage[bookmarks]{hyperref}%TẠO BOOKMARK PDF
\usepackage{bookmark}
\usepackage{mathptmx}%ngôn ngữ time new roman
\usepackage{titlesec}%chinh section
\titleformat{\section}[block]{\normalfont\fontsize{16pt}{0}\bfseries\filcenter}{}{1em}{}
\titlespacing\section{0}{0pt}{0pt}
\usepackage{ragged2e}%căn đều 2 bên
\usepackage{fancyhdr}
\fancyhf{}
\fancyhead[C]{\small\thepage}
\DefTblrTemplate{contfoot-text}{default}{}
\DefTblrTemplate{conthead-text}{default}{}
\DefTblrTemplate{caption}{default}{}
\DefTblrTemplate{conthead}{default}{}
\DefTblrTemplate{capcont}{default}{}
\begin{document}
\noindent\begin{longtblr}{width=1\linewidth,rowhead=1,hlines,vlines,
colspec={X[1,c]X[4,l]X[2,c]X[2,c]X[2,c]},
colsep=6pt,
rowsep=3pt,
rows={1.5cm,m},row{1}={font=\bfseries,c}}
STT&Tên người& {Số tiền\\(Nghìn đồng)}&Ngày xưa có đi không&Đi bao nhiêu\\
1& Chị Nhung Kd Phúc Yên&300\\
2& Chị Nhàn Kd Tam Dương&300\\
3& E Hiền Kd Sản Nhi&300\\
4& Chị Nga Kd Phúc Yên&300\\
5& Chị Vân Viện 9&500\\
6& Chị Dung Vĩnh Tường&500\\
7& Chị Hằng kd Phúc Yên&200\\
8& Lương Quyết&1000&Có&500\\
9& Chị Huyền Anh&1000\\
10&Anh Hải Nội A&300& Có&300\\
11&A Tùng Dương&500\\
12&C Huyền KD&300\\
13&A Thành KD&200\\
14& Thiệu CVP&500\\
15&Linh Chồn&300& Có&300\\
16& Xuyến A1&200& Có \\
17& Phượng A1& 200& Có\\
18&Nguyệt A1&300&Có \\
19&Đức Anh UB&200&Không \\
\end{longtblr}
\end{document}

Rails query join to internal table count

I have two tables:
Player --> has_many FantasyStarts
FantasyStarts --> belongs_to Player
In english, I am trying to find all SeasonStats from the last year and week that were the first entry for that player in the whole table (ie who started last week and it was their first 'start' ever recorded in the table). I have constructed a bare sql query that works great, but I am trying to improve my rails query skills:
FantasyStart.includes(:player).find_by_sql("with count_table as (select player_id, count(*) as num_starts from fantasy_starts where position != 'BN' group by player_id) select * from fantasy_starts join count_table on fantasy_starts.player_id = count_table.player_id where week = 13 and year = 2019 and count_table.num_starts = 1 and position != 'BN' ")
I have also figure out a 'rails way' of creating the map of counts I would join to:
FantasyStart.where.not(position: 'BN').group(:player_id).count
which yields:
=> {184=>2, 2562721=>5, 2540215=>12, 100004=>57, 100001=>26, 100006=>62, 2505785=>5, 2561029=>1, 2541316=>1, 2558954=>1, 2552408=>12, 2532820=>60, 2507999=>25, 2506194=>16, 2505600=>18, 2532977=>6, 2507164=>75, 2495441=>4, 100022=>23, 2543704=>2, 2532807=>1, 81288=>1, 2550658=>4, 2506386=>15, 2560809=>11, 2533349=>4, 2560735=>3, 2557976=>19, 2556521=>15,....
hypothetically i could use the map above to filter the main query and only include player_ids that have a count of 1 in that map.
any good ideas for a next step?
Answering to your answer;
That's because you're chaining pluck to your "nested" query, that way ActiveRecord isn't able to perform a subquery, and instead of that it makes another query and use the result of that, which is an array to use with an IN clause.
Try instead removing the pluck, leaving just select:
FantasyStart.where(week: 13, year: 2019).where.not(position: 'BN').where(player_id: FantasyStart.where.not(position: 'BN').group(:player_id).having('count(*) = 1').select(:player_id))
It should generate something like this:
SELECT fantasy_starts.*
FROM fantasy_starts
WHERE fantasy_starts.week = $1
AND fantasy_starts.year = $2
AND fantasy_starts.position != $3
AND fantasy_starts.player_id IN (
SELECT fantasy_starts.player_id
FROM fantasy_starts
WHERE fantasy_starts.position != $4
GROUP BY fantasy_starts.player_id
HAVING (count(*) = 1)
) [[week, 13], [year, 2019], [position, BN], [position, BN]]
It seems you could shorten the query by removing the != from the subquery:
FantasyStart
.where.not(position: 'BN')
.where(player_id: FantasyStart
.group(:player_id)
.having('count(*) = 1')
.select(:player_id), week: 13, year: 2019)
hey i think i made progress curious what one of you more experience folk might think:
FantasyStart.where(week: 13, year: 2019).where.not(position: 'BN').where(player_id: FantasyStart.select(:player_id).where.not(position: 'BN').group(:player_id).having('count(*) = 1').pluck(:player_id))
this generates:
(8.4ms) SELECT "fantasy_starts"."player_id" FROM "fantasy_starts" WHERE "fantasy_starts"."position" != $1 GROUP BY "fantasy_starts"."player_id" HAVING (count(*) = 1) [["position", "BN"]]
FantasyStart Load (2.4ms) SELECT "fantasy_starts".* FROM "fantasy_starts" WHERE "fantasy_starts"."week" = $1 AND "fantasy_starts"."year" = $2 AND "fantasy_starts"."position" != $3 AND "fantasy_starts"."player_id" IN ($4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44, $45, $46, $47, $48, $49, $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $60, $61, $62, $63, $64, $65, $66, $67, $68, $69, $70, $71, $72, $73, $74, $75, $76, $77, $78, $79, $80, $81, $82, $83, $84, $85, $86, $87, $88, $89, $90, $91, $92, $93, $94, $95, $96, $97, $98, $99, $100, $101, $102, $103, $104, $105, $106, $107, $108, $109, $110, $111, $112, $113, $114, $115, $116, $117, $118, $119) LIMIT $120
this is still two queries so i know it could be better...

Latex document written in Arabic but the References List does not printed in English

In Latex, I am using biber but it does not show the references in the right format, maybe due to the use of second language Arabic and its package arabtex. There are many bilingual packages that allow you to make the references in another language. However, I am newbie in bilingual packages with LaTex and references.
The references
This how it suppose to be printed as
\documentclass[article,10pt]{amsart}
\usepackage{ifluatex,ifxetex}
\ifluatex
\usepackage{fontspec} % optional
\else\ifxetex
\usepackage{fontspec} % optional
\else % assume that pdftex engine is in use
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} % optional for "\ng"
\fi\fi
\usepackage{graphicx}
\graphicspath{ {./images/} }
\usepackage[bibencoding=utf8, backend=biber, style=apa, language=english]{biblatex}
\DeclareLanguageMapping{english}{english-apa}
\addbibresource{func.bib}
\usepackage{amsmath}
\usepackage{hyperref}
\usepackage{arabtex}
\usepackage{utf8}
\usepackage{boondox-cal}
\usepackage[margin=0.5in]{geometry}
\usepackage{steinmetz}
\title{Functions}
\author{Mohammad Alkahtani}
\date{May 2020}
\begin{document}
\setcode{utf8}
\pagenumbering{gobble}
\maketitle
\newpage
\pagenumbering{arabic}
\section{Power Series}
\setarab
\fullvocalize
\arabtrue
\begin{RLtext}
الدوال بالإمكان تكوينها كمجموعه من حدود تعطي نتيجة الدالة إذا كانت الحدود غير منتهية و نتيجة تقريبية للدالة في حالة كانت الحدود محددة العدد و هذا ما يستخدم في الحاسب و تحويل الدوال من صيغيتها في الطبيعه إلى صيغتها في الأجهزه الإلكترونية لتكون مرئية أو مسموعه فعلى سبيل المثال جرب الموقع التالي و تأكد أن المسموع لك هو بين 20 هرتز إلى 20,000 هرتز و الدالة عندما نجمعها مع مجموعه مشاببه لها في تردد زمني معني يتكون لنا صوت
\end{RLtext}
\href{http://meettechniek.info/additional/additive-synthesis.html}{Sounds}
\begin{RLtext}
جرب الرابط الثاني بالإسفل و تأكد أن الصور و الرسمات يجسدها مجموعه من الدوال الرياضية في الحاسب و عند تجميع أكثر من صورة في تردد زمني معين يتكون لنا مقطع مرئي و بإمكان إضافة له موجات من الصوت فيصبح فلم
\end{RLtext}
\href{https://blogs.scientificamerican.com/guest-blog/making-mathematical-art/}{Pictures}
\\*
\begin{equation}
1 + x + x^2 + x^3 + .... \tag{1.1} \label{eq:frame0}
\end{equation}
\begin{equation}
1 + x + \frac{x^2}{2} + \frac{x^3}{6} + .... \tag{1.2} \label{eq:frame1}
\end{equation}
\begin{RLtext}
الدالة
\end{RLtext}
\eqref{eq:frame0} from \autocite{Flint2012}
\begin{RLtext}
و الدالة
\end{RLtext}
\eqref{eq:frame1} from \autocite{Flint2012}
\begin{RLtext}
عبارة عن مجموعة حدود تمثل دوال أخرى
\end{RLtext}
\subsection{Sine}
\begin{equation}
\sin x = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \frac{x^7}{7!} + ... \textrm{ where the degree } x \textrm{ in radians} \tag{1.1.1} \label{eq:frame2}
\end{equation}
\begin{RLtext}
تكوين دالة الجا ، بهذا التكوين نستخدمها أستخدام أمثل في التطبيقات الهندسية عندما نواجه الأعداد التخيليه و ليس بإمكان إيجاد قيمة جذر سالب واحد و لكن عند ضرب عدد تخيلي بأخر فإننا نحصل على القيمة سالب واحد و تتسهل المعادلة بدل إيجاد قيمة عدد تخيلي
\end{RLtext}
\eqref{eq:frame2} from \autocite{Flint2012}
\begin{equation}
\sin 0.5 = 0.5 - \frac{(0.5)^3}{3!} + \frac{(0.5)^5}{5!} - \frac{(0.5)^7}{7!} + ... \tag{1.1.2} \label{eq:frame3}
\end{equation}
this eq \autocite{JamesFlint2012} From \eqref{eq:frame3} $\sin 0.5 \approx 0.5 - 0.0208333 + 0.0002604 = 0.4794271$
\begin{equation}
\sin x \approx x \textrm{ where the degree } x \textrm{ is small and measured in radians} \tag{1.1.3} \label{eq:frame4}
\end{equation}
\begin{RLtext}
قيمة تقريبية لتكوين دالة الجا
\end{RLtext}
\eqref{eq:frame4} from \autocite{Flint2012}
\subsection{Cosine}
\begin{equation}
\cos x = 1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \frac{x^6}{6!} + ... \tag{1.2.1} \label{eq:frame5}
\end{equation}
\begin{RLtext}
تكوين دالة الجتا ، بهذا التكوين نستخدمها أستخدام أمثل في التطبيقات الهندسية عندما نواجه الأعداد التخيليه و ليس بإمكان إيجاد قيمة جذر سالب واحد و لكن عند ضرب عدد تخيلي بأخر فإننا نحصل على القيمة سالب واحد و تتسهل المعادلة بدل إيجاد قيمة عدد تخيلي
\end{RLtext}
\eqref{eq:frame5} from \autocite{Flint2012}
\begin{equation}
\cos x \approx 1 - \frac{x}{2!} \textrm{ where the degree } x \textrm{ is small and measured in radians} \tag{1.2.2} \label{eq:frame6}
\end{equation}
\begin{RLtext}
قيمة تقريبية لتكوين دالة الجتا
\end{RLtext}
\eqref{eq:frame6} from \autocite{Flint2012}
\subsection{Exponential}
\begin{equation}
\exp^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \frac{x^4}{4!} + ... \tag{1.3.1} \label{eq:frame7}
\end{equation}
\begin{RLtext}
تكوين الدالة الأسية ، بهذا التكوين نستخدمها أستخدام أمثل في التطبيقات الهندسية عندما نواجه الأعداد التخيليه و ليس بإمكان إيجاد قيمة جذر سالب واحد و لكن عند ضرب عدد تخيلي بأخر فإننا نحصل على القيمة سالب واحد و تتسهل المعادلة بدل إيجاد قيمة عدد تخيلي
\end{RLtext}
\eqref{eq:frame7} from \autocite{Flint2012}
\section{Complex Number}
\noindent
\begin{RLtext}
الأعداد التخيليه
\end{RLtext}
$\mathbb{C}$
$a+bi$ \\
$i^2=-1$ \\
$\mathbb{C}$
$a+bj$ \\
$j^2=-1$ \\
$\Re(z)$ and $\operatorname{Re}(z)$ \\
$\Im(z)$ and $\operatorname{Im}(z)$ \\
\begin{equation}
\exp^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \frac{x^4}{4!} + ... \tag{2.1} \label{eq:frame8}
\end{equation}
\begin{RLtext}
تكوين الدالة الأسية ، بهذا التكوين نستخدمها أستخدام أمثل في التطبيقات الهندسية عندما نواجه الأعداد التخيليه و ليس بإمكان إيجاد قيمة جذر سالب واحد و لكن عند ضرب عدد تخيلي بأخر فإننا نحصل على القيمة سالب واحد و تتسهل المعادلة بدل إيجاد قيمة عدد تخيلي
\end{RLtext}
\eqref{eq:frame8} from \autocite{Flint2012}
\subsection{The exponential form of a complex number}
\noindent
\\*
From \eqref{eq:frame8} from \autocite{Flint2012}
\begin{equation}
\exp^{j\theta} = \cos \theta + j \sin \theta \tag{2.1.1} \label{eq:frame9}
\end{equation}
\begin{RLtext}
تحويل الدالة الأسية عندما يكون العدد التخيلي في الأس موجب إلى جا و جتا، بهذا التحويل نستخدم الدوال و نغييرها في التطبيقات الهندسية عندما نواجه الأعداد التخيليه و ليس بإمكان إيجاد قيمة جذر سالب واحد و لكن عند ضرب عدد تخيلي بأخر فإننا نحصل على القيمة سالب واحد و تتسهل المعادلة بدل إيجاد قيمة عدد تخيلي
\end{RLtext}
\eqref{eq:frame9} from \autocite{Flint2012}
\begin{equation}
\exp^{-j\theta} = \cos \theta - j \sin \theta \tag{2.1.2} \label{eq:frame10}
\end{equation}
\begin{RLtext}
تحويل الدالة الأسية عندما يكون العدد التخيلي في الأس سالب إلى جا و جتا، بهذا التحويل نستخدم الدوال و نغييرها في التطبيقات الهندسية عندما نواجه الأعداد التخيليه و ليس بإمكان إيجاد قيمة جذر سالب واحد و لكن عند ضرب عدد تخيلي بأخر فإننا نحصل على القيمة سالب واحد و تتسهل المعادلة بدل إيجاد قيمة عدد تخيلي
\end{RLtext}
\eqref{eq:frame10} from \autocite{JamesFlint2012}
\begin{equation}
\sin \theta = \frac{\left[e^{j\theta} - e^{-j\theta}\right] }{2j} \tag{2.1.3} \label{eq:frame11}
\end{equation}
\begin{RLtext}
تحويل دالة الجا إلى دالة أسية ، بهذا التحويل نستخدم الدوال و نغييرها في التطبيقات الهندسية عندما نواجه الأعداد التخيليه و ليس بإمكان إيجاد قيمة جذر سالب واحد و لكن عند ضرب عدد تخيلي بأخر فإننا نحصل على القيمة سالب واحد و تتسهل المعادلة بدل إيجاد قيمة عدد تخيلي
\end{RLtext}
\eqref{eq:frame11} from \autocite{Flint2012}
\begin{equation}
\cos \theta = \frac{\left[e^{j\theta} + e^{-j\theta}\right] }{2} \tag{2.1.4} \label{eq:frame12}
\end{equation}
\begin{RLtext}
تحويل دالة الجتا إلى دالة أسية ، بهذا التحويل نستخدم الدوال و نغييرها في التطبيقات الهندسية عندما نواجه الأعداد التخيليه و ليس بإمكان إيجاد قيمة جذر سالب واحد و لكن عند ضرب عدد تخيلي بأخر فإننا نحصل على القيمة سالب واحد و تتسهل المعادلة بدل إيجاد قيمة عدد تخيلي
\end{RLtext}
\eqref{eq:frame12} from \autocite{Flint2012}
\section{Taylor Series, Maclaurin Series and Mansour’s theorem}
\noindent
\\*
Taylor Series
\noindent
\begin{equation}
f(x) = f(0) + \frac{f'(0)}{1!} (x -a)^1 + \frac{f(0)}{2!} (x -a)^2 + \frac{f'(0)}{3!} (x-a)^3 + \dotsb = \sum_{k=0}^\infty \frac{f^{\left(k\right)}(0)}{k!} (x-a)^k \tag{3.1} \label{eq:frame13}
\end{equation}
\begin{RLtext}
سلسلة تايلور للقوى عبارة عن تكوين الدالة من القيمة الأبتدائية للدالة عند عدد معين ثم جمع مشتقات الدالة عند القيمة الأبتدائية مضروب في المتغير مطروح منه العدد المعين، المضروب يكون مروفع للأس أو القوة لرقم الحد أبتداء من الحد الثالث الأس الثاني أو للقوة 2 لأن الحد الأول 0 و الحد الثاني 1 و ناتج الأس أو القوة للحد الأول و الثاني عبارة عن 1 و نفس الدالة على التوالي، ثم نقسم على مضروب رقم الحد
\end{RLtext}
\eqref{eq:frame13} from \autocite{Flint2012}
\\*
Maclaurin Series
\begin{equation}
f(x) = f(0) + \frac{f'(0)}{1!}x + \frac{f(0)}{2!}x^2 + \frac{f'(0)}{3!}x^3+\dotsb = \sum_{k=0}^\infty \frac{f^{\left(k\right)}(0)}{k!} x^k \tag{3.2} \label{eq:frame14}
\end{equation}
\begin{RLtext}
سلسلة ماك لورين للقوى نفس سلسلة تايلور مع جعل العدد الثابت صفر فتكوين الدالة من قيمة الدالة الأبتدائية عند صفر و لا يكون هناك طرح لأنك تطرح من صفر
\end{RLtext}
\eqref{eq:frame14} from \autocite{Flint2012}
Mansour Series
\begin{equation}
f(x) = \dfrac{\sum\limits_{k=0}^{\infty} f_k (m) (g(m) -M)^k }{k!} \tag{3.3} \label{eq:frame15}
\end{equation}
\eqref{eq:frame15} \autocite{Hammad2013}
Explaintaion of Mansour Series
Let
\begin{equation}
f(x) = \sum_{k=0}^{\infty} S_k (g(m) -M)^k \textrm{ Where } S_k \textrm{ is a constant and } M \textrm{ is the value of the function } g(m) \textrm{ at variable } m \tag{3.4} \label{eq:frame16}
\end{equation}
\eqref{eq:frame16} \autocite{Hammad2013}
\begin{equation}
f_k(x) = \frac{f'_k(x)}{g'(m)} \textrm{ Where } f' \textrm{ and } g' \textrm{ are the functions first derivatives }\tag{3.5} \label{eq:frame17}
\end{equation}
\eqref{eq:frame17} \autocite{Hammad2013}
In the papaer \autocite{Hammad2013}
\href{https://www.researchgate.net/publication/277597486_Numerical_and_Analytical_Methods_in_Engineering_IRENA_If_fx_is_a_Function_in_gx_what_are_the_Coefficients_of_that_Function_A_New_Expansion_for_Analytic_Function_in_Standard_Form_fx_S_k0_S_k_gx_-_Mk/link/556e1db608aeab777226a184/download}{An article by Mansour Hammad}
\begin{RLtext}
في المثال الأول عند التعويض بقيمة للمتغيير
\end{RLtext}
\begin{equation}
f(x) = g(x)^2 \textrm{ Where } g(x) = x^2 + x -6 \textrm{ The result is } f(x) = x^4 + 2 x^3 - 11 x^2 -12 x + 36 \tag{3.6} \label{eq:frame18}
\end{equation}
\eqref{eq:frame18} \autocite{Hammad2013}
\begin{RLtext}
نعوض عن قيمة المتغير ب 4 على سبيل المثال
\end{RLtext}
\begin{equation}
f(x) = g(x)^2 \textrm{ Where } g(x) = 4^2 + 4 -6 = 16 + 4 -6 = 14^2 = 196 \textrm{ The result is } \tag{3.7} \label{eq:frame19}
\end{equation}
\eqref{eq:frame19}
\begin{equation}
f(x) = 4^4 + 2 4^3 - 11 4^2 -12 4 + 36 = 256 + 2(64) - 11(16) - 12(4) + 36 = 256 +128 -176 - 48 + 36 = 196 \textrm{ Both gives the same result } \tag{3.8} \label{eq:frame20}
\end{equation}
\eqref{eq:frame20}
\begin{RLtext}
الرابط بين الدالتين المذكورتين في المقالة هو أن أحدهما تساوي الدالة نفسها مضروبة في نفسها أكثر من مرة أي أنها من توليد القوى للدالة، بمعنى أخرى دالة تساوي الجذر التربيعي لدالة أخرى أو الجذر التكعيبي أو .... الخ. علماً أن المقالة في أخطأ أملائية في مقدمة المقالة المقطع الثاني إذاً - ثم كتبت من، ولم تصصح من مراجعي المقالة قبل النشر و لكن المادة العلمية عبارة عن طريقة جديدة مشابهه لطرق أخرى تنشر في مجلات علمية عديدة. الذي لم أجد له منطق هو جعل القيمة الإبتدائية للدالة في السلسلة مساوي لقيمة الدالة، فقيمة الدالة عند أول قيمة لها في السلسلة المجموعة برمز سيجما مساوي لقيمة الدالة كما في القاعدة 21 في المقالة. فهل هذا شرط لتطبيق السلسلة أن يكون الحد الأول مساوي للدالة نفسها، إذا كان كذلك فأن بقية الحدود عبارة عن زيادة لا حاجة لها.
\end{RLtext}
\begin{equation}
f(x) = g(x)^2 or f(x) = g(x)^3 \tag{3.9} \label{eq:frame21}
\end{equation}
\eqref{eq:frame21} as in \autocite{Hammad2013}
\newpage
\section{Transmission Lines}
\begin{RLtext}
الموجات تمثل بدوال و الأصوات و الصور و الأفلام في الطبيعة عبارة عن إندماج موجات مع بعضها مما يؤدي إلى إندماج دوال مع بعضها، عند تمثيل هذه الأشياء الطبيعية على الحاسب فأننا نحتاج إلى تحويلها من صيغتها الطبيعية الغير منتهية في علم الجبر و الحساب تسمى متسلسلة لا نهائية إلى صيغة حاسوبية محدودة أو ما يسمى في علم الجبر و الحساب المجاميع المنتهية، هي تمثل المتسلسلة اللانهائيه بطريقة تقريبية. هذه الموجات تحتاج إلى وسط ينقلها من مكان إلى آخر و عند نقلها يتكون هناك ما يسمى بإرتداد الموجات عند النقل في خطوط النقل و أيضاً الموجات المتولدة من الموجات المغناطيسية المصاحبة للموجه الكهربائية في الحاسب فيكون لدينا عاملين دخيلين يغيرون في الموجه الأصلية الموجات المغناطيسية و إرتداد الموجات في خطوط النقل من المراجع الجيدة.
\end{RLtext}
\autocite{GuntherRoland2005}
This is the course link: \href{https://ocw.mit.edu/courses/physics/8-02x-physics-ii-electricity-magnetism-with-an-experimental-focus-spring-2005/}{8.02x - MIT Physics II: Electricity and Magnetism. By Prof. Gunther M. Roland and Dr. Peter Dourmashkin in 2007}.
\autocite{Lewin2002}
Another course link with demonstration (note the link in the references list is the link in MIT University Website from Archive): \href{https://www.youtube.com/watch?v=rtlJoXxlSFE&list=PLyQSN7X0ro2314mKyUiOILaOC2hk6Pc3j}{Lectures by Walter Lewin for the course 8.02x - MIT Physics II: Electricity and Magnetism.}.
\begin{RLtext}
معادلة النواقل تمثل بدائرة فيها مقاومة مع ملف على التوالي متتالية مع مقاومة مع مكثف على التوازي
\end{RLtext}
The equations above used in transmission lines and wave propgation to solve their propsoed equation by expanding functions
\begin{equation}
\frac{d^2 V}{dt^2} =\frac{ 1}{\mathcal{L} C} \frac{d^2 V}{dx^2} \tag{4.1} \label{eq:frame22}
\end{equation}
\eqref{eq:frame22} as in \autocite{Kraus1999}
\newpage
\includegraphics{cables}
\\*
The picture of cables above from \autocite{Kraus1999}
\newpage
\begin{RLtext}
بالنظر إلى الصورة نلاحظ أن المرجع ذكر أن الموصلات العصبية لا تفقد أي شيء من الموجات كما أنه لا يوجد أي موجه دخيلة على الموجات التي تنقلها. شاهدت قديماً في قناة BBC برنامج عن الموجات في العقل و كيف أنه عند أختيار لون معين أو عندما تحتار في إختيار شيء ينتج نشاط للعقل بالإمكان قياسه و معرفة في أي فص من فصوص العقل الأربعة شبية بالبرنامج أدناه
\end{RLtext}
\href{https://www.bbc.co.uk/programmes/p03gvnvn}{The brain of a world champion cup stacker}
\begin{RLtext}
فالإطباء بالتأكيد لديهم المعلومة الأكيدة حول نوعية الموجات إن كانت كهربائية الألكترومغناطيسية مصاحبة لها و تسبب نوع من التأثير على الموجه. إن كانت مغناطيسية فلها خواص المغناطيس من حيث الجذب إن كانت ضوئية فهي مزيج من الخواص. ربما تكون موجه معينة ذات طابع خاص و لكن بإلإمكان قياسها ب الإلكتروكارديو دايجرام مختصره إي سي جي يقيس الموجات الكهربائية كالموجة الضوئية بإلإمكان قياس الخاصية الكهربائيه بها. أو أن المرجع عندما ذكر أن الموجات العصبية غير مفقودة أو متداخلة أخطأ
\end{RLtext}
\begin{RLtext}
ليتنا نجد مثل هذه الموصلات في الحاسب لأنه يحدث الخطأ عند نقل البيانات في الشبكة و الطريقة المستخدمة حالياً هي تصحيح الخطأ بمعادلات حسابية تضاف إلى الرسالة المرسلة لأنه لو أرسل مرسل رسالة عبر شبكة الحاسب ثم المستقبل رد هل أرسلت هذه الرسالة للتأكد ربما يكون هناك خطأ في الرسالة المرسلة أو الرسالة المرسلة من المستقبل و يحدث خطأ في الأرسال أو تأكد أن رسالة خاطئة تم أرسالها و تعتبر صحيحة
أول الطرق المستخدمه هي إضافة رقم وحيد 0 أو 1 في نهاية الرسالة فإذا كان عدد الخانات التي تحمل الرقم 1 زوجي تكون الخانة الأخيرة 1 أما إن كان فردي تكون الخانة الأخيرة 0 . في هذه الحالة يتم رمي الرسالة و طلب إرسالها مره أخرى و هذه مكلف في عملية نقل البيانات حتى أوجدت معادلات تصحيح خطأ الرسالة و هي مستخدمة في أجزاء متفرقة في الحاسب غير نقل البيانات عبر الشبكة ، مبدأ تصحيح أخطأ البيانات
\end{RLtext}
\href{https://en.wikipedia.org/wiki/Parity_bit}{Parity bit}
\\*
\href{https://en.wikipedia.org/wiki/Cyclic_redundancy_check}{Cyclic redundancy check}
\\*
\href{http://www.cs.tau.ac.il/~amnon/Classes/2017-ECC/Lectures/Lecture2.pdf}{Error Correcting Codes}
\\*
\begin{RLtext}
نحسب الإلترداد للموجات في الخطوط الناقلة بالمعادلة التالية
\end{RLtext}
\begin{equation}
\frac{V_1}{V_0} =\frac{Z_L - Z_0}{Z_L + Z_0} = \rho_v \tag{4.2} \label{eq:frame23}
\end{equation}
$ \rho_v $
\begin{RLtext}
وهذا هو معامل الإلترداد للموجات في الخطوط الناقلة للجهد الكهربائي
\end{RLtext}
\eqref{eq:frame23} as in \autocite{Kraus1999}
\begin{equation}
\textrm{ Where } V_0 = \mid V_0 \mid e^{\gamma x} \textrm{ The voltage of the signal that we sent } V_1 = \mid V_1 \mid e^{-\gamma x + j \zeta} \textrm{ The voltage of the signal that reflected }\tag{4.3} \label{eq:frame24}
\end{equation}
\eqref{eq:frame24} as in \autocite{Kraus1999}
\\*
$ x $
\begin{RLtext}
الأكس عبارة عن مسافة الخط الناقل
\end{RLtext}
\begin{equation}
\textrm{ Where } \gamma = \alpha + j \beta \textrm{ and } \zeta = \textrm{ is the phase shift at load L } \tag{4.4} \label{eq:frame25}
\end{equation}
\eqref{eq:frame25} as in \autocite{Kraus1999}
\begin{equation}
\textrm{ Where } \alpha = \operatorname{Re}(\sqrt{ZY}) \textrm{ and } \beta = \operatorname{Im}(\sqrt{ZY}) \tag{4.5} \label{eq:frame26}
\end{equation}
\eqref{eq:frame26} as in \autocite{Kraus1999}
\begin{equation}
\textrm{ Where } Z = R + j \omega \mathcal{L} \textrm{ and } Y = G + j \omega C \textrm{ G is the resistor parallel to the capcitor }\tag{4.6} \label{eq:frame26}
\end{equation}
\eqref{eq:frame26} as in \autocite{Kraus1999}
\begin{RLtext}
هذه الخواص تتغير بتغير المادة الناقلة ، لأن هذه الخواص تتحكم في معادلة القوة بين الشحنات الإلكترونية وهي أصغر وحدة في الموجة فمعامل السماح أو النفاذ أو التوصيل أدناه في مقام معادلة قوة التجاذب بين الشحنات و إن كبر المقام قلة قيمة قوة التجاذب بين الشحنات.
\end{RLtext}
\begin{equation}
\epsilon_{r} \epsilon_{0} \textrm{ relative premittivity multiplied by vacuum premittivity } \tag{4.7} \label{eq:frame27}
\end{equation}
\begin{RLtext}
عموماً معادلة مقاومة المواد هي
\end{RLtext}
\begin{equation}
z_0 = \sqrt{\frac{\mu_{0}}{\epsilon_{0}}}\textrm{ mobility divided by premittivity } \tag{4.8} \label{eq:frame28}
\end{equation}
\eqref{eq:frame28} as in \autocite{Kraus1999}
\\*
\href{https://en.wikipedia.org/wiki/Relative_permittivity}{premittivity}
\\*
\href{https://en.wikipedia.org/wiki/Electron_mobility}{mobility}
\begin{RLtext}
لذلك تستخدم بعض المواد حسب الرغبة توصيل أم عزل و حسب الإرتداد في المسافة الموجودة فمثلاً الدوائر ذات التردد العالي و المسافة القصيرة مثل المعالجات قد تستخدم مواد مثل الذهب بدل النحاس
\end{RLtext}
\href{https://onlinelibrary.wiley.com/doi/pdf/10.1002/9781118936160.app2}{Material Properties}
\begin{RLtext}
المقاومة في طرف الإرسال و طرف الإستقبال يجب أن تكون قيمها متناسبه حسب المسافة بين الإرسال و الأستقبال لذلك نسمي المسافة أكس لكي نوجد قيم المقاومات لتتناسب
\end{RLtext}
\begin{equation}
\textrm{ Where } Z_L \textrm{ and } Z_0 \textrm{ must match } \tag{4.9} \label{eq:frame29}
\end{equation}
\eqref{eq:frame29} as in \autocite{Kraus1999}
\begin{RLtext}
هناك معادلة لمقاومة المسافة و هي
\end{RLtext}
\begin{equation}
\textrm{ } Z_x = Z_0 \frac{Z_L + Z_0 \tanh(\gamma x)}{Z_0 + Z_L \tanh(\gamma x)} \textrm{ } Z_0 \tag{4.10} \label{eq:frame30}
\end{equation}
\eqref{eq:frame30} as in \autocite{Kraus1999}
\begin{RLtext}
هذه المعادلة تم إستخلاصها من تحويل دوال الدوائر الجا و الجتا و الظا و الظتا و دوال الأسس و القوى مع السلاسل من معادلة التيار و فرق الجهد
\end{RLtext}
\begin{equation}
\textrm{ Where } Z_x = \frac{V}{I} = \frac{\mid V_0 \mid}{\mid I_0 \mid} \phase{\delta} \left( \frac{e^{\gamma x} + \rho_{v} e^{-\gamma x}}{e^{\gamma x} - \rho_{v} e^{-\gamma x}} \right) \tag{4.11} \label{eq:frame31}
\end{equation}
\eqref{eq:frame31} as in \autocite{Kraus1999}
\newpage
\begin{frame}{References}
\printbibliography
\end{frame}
\end{document}
My BibTex File
% Encoding: UTF-8
#Article{Hammad2013,
author = {Mansour Hammad},
date = {2013-04-01},
journaltitle = {Numerical and Analytical Methods in Engineering (IRENA)},
title = {If f(x) is a Function in g(x), what are the Coefficients of that Function? A New Expansion for Analytic Function in Standard Form f(x) = Segma k=0 to infinity = S k (g(x) – M) to the power of k},
}
#Misc{Lewin2002,
author = {Walter Lewin},
title = {8.02X Physics II: Electricity and Magnetism, Spring 2002. Massachusetts Institute of Technology: MIT OpenCourseWare.},
howpublished = {https://www.youtube.com/channel/UCiEHVhv0SBMpP75JbzJShqw},
note = {Accessed on 2020-05-05},
url = {https://web.archive.org/web/20111229055249/http://ocw.mit.edu/courses/physics/8-02-electricity-and-magnetism-spring-2002},
month = mar,
year = {2002},
}
#Misc{GuntherRoland2005,
author = {Gunther Roland, and Peter Dourmashkin},
title = {8.02X Physics II: Electricity and Magnetism with an Experimental Focus, Spring 2005. Massachusetts Institute of Technology: MIT OpenCourseWare.},
howpublished = {https://ocw.mit.edu/courses/physics/8-02x-physics-ii-electricity-magnetism-with-an-experimental-focus-spring-2005},
note = {Accessed on 2020-05-05},
url = {https://ocw.mit.edu/courses/physics/8-02x-physics-ii-electricity-magnetism-with-an-experimental-focus-spring-2005},
month = mar,
year = {2005},
}
#Book{Flint2012,
author = {Flint, James and Hargreaves, Martin and Davison, Robert and Croft, Anthony},
date = {2012-12-04},
title = {Engineering Mathematics : A Foundation for Electronic, Electrical, Communications and Systems Engineers},
}
#Book{Kraus1999,
author = {John Daniel Kraus and Daniel A. Fleisch},
date = {1999-01-01},
title = {Electromagnetics with Applications},
}
#Comment{jabref-meta: databaseType:biblatex;}
The result is the reference page in this link (first reference) because the second is trying the BibTex file without Arabic Language
https://drive.google.com/file/d/1RdBrj0wMEilmaT9ZxTCBQVT7zpleaIYz/view
ŋŊßßþÞEngineering mathematics you can see the letters before Engineering
The problem comes from an interaction between arabtex and the apacase macro. If you make sure that all your references are already in the correct casing, you can switch off the macro like this:
\documentclass{amsart}
\usepackage[T1]{fontenc}
\usepackage{arabtex}
\usepackage[style=apa]{biblatex}
\makeatletter
\DeclareFieldFormat{apacase}{#1}
\makeatother
\begin{filecontents*}[overwrite]{\jobname.bib}
#Book{Kraus1999,
author = {John Daniel Kraus and Daniel A. Fleisch},
date = {1999-01-01},
title = {Electromagnetics with Applications},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\autocite{Kraus1999}
\printbibliography
\end{document}

left outer join query in Informix

I have two queries from which I expected to get same result.
First one:
select d.serialno, d.location, d.ticket, d.vehicle, o.name, d.parrivaltime, e.etype
from deliveries d left outer join events e
on d.serialno=e.eserialno and d.client=e.eclient and d.carrier=e.ecarrier and d.location=e.elocation
left outer join operators o
on d.client=o.client AND d.driver=o.code AND d.carrier=o.carrier AND d.location=o.location
where d.statusmessage='CURRENT' and d.scheduleddate BETWEEN '08/02/2017' AND '08/03/2017' and d.dropno!=0 and d.location in ('MIAMID') AND (e.etype=107 or e.etype=108)
order by d.location, d.dropno, e.etype;
Second one:
select d.serialno, d.location, d.ticket, d.vehicle, o.name, d.parrivaltime, e.etype
from deliveries d, outer events e, outer operators o
where d.serialno=e.eserialno and d.client=e.eclient and d.carrier=e.ecarrier and d.location=e.elocation
AND d.client=o.client and d.driver=o.code and d.carrier=o.carrier and d.location=o.location
AND d.statusmessage='CURRENT' and d.scheduleddate BETWEEN '08/02/2017' AND '08/03/2017' and d.dropno!=0 and d.location in ('MIAMID') AND (e.etype=107 or e.etype=108)
order by d.location, d.dropno, e.etype;
However, from the first query, I got 1044 records. But from the second query, I got 876 records.
I also checked the explain.out file which is as below. But I still cannot figure out why the output record is different.
QUERY: (OPTIMIZATION TIMESTAMP: 09-06-2017 11:27:22)
------
select d.serialno, d.location, d.ticket, d.vehicle, o.name, d.parrivaltime, e.etype from deliveries d, outer events e, outer operators o where d.serialno=e.eserialno and d.client=e.eclient and d.carrier=e.ecarrier and d.location=e.elocation AND d.client=o.client AND d.driver=o.code AND d.carrier=o.carrier AND d.location=o.location AND d.statusmessage='CURRENT' and d.scheduleddate BETWEEN '08/02/2017' AND '08/03/2017' and d.dropno!=0 and d.location in ('MIAMID') AND (e.etype=107 or e.etype=108) order by d.location, d.dropno, e.etype
Estimated Cost: 304
Estimated # of Rows Returned: 71
Temporary Files Required For: Order By
1) jlong.d: INDEX PATH
Filters: (jlong.d.statusmessage = 'CURRENT' AND jlong.d.dropno != 0 )
(1) Index Name: informix.delivcapac1idx
Index Keys: scheduleddate location client customername (Serial, fragments: ALL)
Index Self Join Keys (scheduleddate )
Lower bound: jlong.d.scheduleddate >= 08/02/2017
Upper bound: jlong.d.scheduleddate <= 08/03/2017
Lower Index Filter: jlong.d.scheduleddate = jlong.d.scheduleddate AND jlong.d.location = 'MIAMID'
2) jlong.o: INDEX PATH
(1) Index Name: informix. 126_300
Index Keys: client carrier location code (Serial, fragments: ALL)
Lower Index Filter: (((jlong.d.driver = jlong.o.code AND jlong.d.location = jlong.o.location ) AND jlong.d.carrier = jlong.o.carrier ) AND jlong.d.client = jlong.o.client )
NESTED LOOP JOIN
3) jlong.e: INDEX PATH
Filters: ((((jlong.d.carrier = jlong.e.ecarrier AND (jlong.e.etype = 107 OR jlong.e.etype = 108 ) ) AND jlong.d.location = jlong.e.elocation ) AND jlong.d.client = jlong.e.eclient ) AND jlong.e.elocation = 'MIAMID' )
(1) Index Name: informix.ix154_17
Index Keys: eserialno (Serial, fragments: ALL)
Lower Index Filter: jlong.d.serialno = jlong.e.eserialno
NESTED LOOP JOIN
Query statistics:
-----------------
Table map :
----------------------------
Internal name Table name
----------------------------
t1 d
t2 o
t3 e
type table rows_prod est_rows rows_scan time est_cost
-------------------------------------------------------------------
scan t1 603 71 742 00:00.00 122
type table rows_prod est_rows rows_scan time est_cost
-------------------------------------------------------------------
scan t2 603 741 603 00:00.00 1
type rows_prod est_rows time est_cost
-------------------------------------------------
nljoin 603 71 00:00.00 158
type table rows_prod est_rows rows_scan time est_cost
-------------------------------------------------------------------
scan t3 876 1597 1729 00:00.00 2
type rows_prod est_rows time est_cost
-------------------------------------------------
nljoin 1044 71 00:00.01 291
type rows_sort est_rows rows_cons time est_cost
------------------------------------------------------------
sort 1044 71 1044 00:00.01 14
QUERY: (OPTIMIZATION TIMESTAMP: 09-06-2017 11:27:29)
------
select d.serialno, d.location, d.ticket, d.vehicle, o.name, d.parrivaltime, e.etype from deliveries d left outer join events e on d.serialno=e.eserialno and d.client=e.eclient and d.carrier=e.ecarrier and d.location=e.elocation left outer join operators o on d.client=o.client AND d.driver=o.code AND d.carrier=o.carrier AND d.location=o.location where d.statusmessage='CURRENT' and d.scheduleddate BETWEEN '08/02/2017' AND '08/03/2017' and d.dropno!=0 and d.location in ('MIAMID') AND (e.etype=107 or e.etype=108) order by d.location, d.dropno, e.etype
Estimated Cost: 254
Estimated # of Rows Returned: 1
Temporary Files Required For: Order By
1) jlong.d: INDEX PATH
Filters: (jlong.d.statusmessage = 'CURRENT' AND jlong.d.dropno != 0 )
(1) Index Name: informix.delivcapac1idx
Index Keys: scheduleddate location client customername (Serial, fragments: ALL)
Index Self Join Keys (scheduleddate )
Lower bound: jlong.d.scheduleddate >= 08/02/2017
Upper bound: jlong.d.scheduleddate <= 08/03/2017
Lower Index Filter: jlong.d.scheduleddate = jlong.d.scheduleddate AND jlong.d.location = 'MIAMID'
2) jlong.e: INDEX PATH
Filters: ((jlong.e.etype = 107 OR jlong.e.etype = 108 ) AND jlong.e.elocation = 'MIAMID' )
(1) Index Name: informix.ix154_17
Index Keys: eserialno (Serial, fragments: ALL)
Lower Index Filter: jlong.d.serialno = jlong.e.eserialno
ON-Filters:(((jlong.d.serialno = jlong.e.eserialno AND jlong.d.client = jlong.e.eclient ) AND jlong.d.carrier = jlong.e.ecarrier ) AND jlong.d.location = jlong.e.elocation )
NESTED LOOP JOIN
3) jlong.o: INDEX PATH
(1) Index Name: informix. 126_300
Index Keys: client carrier location code (Serial, fragments: ALL)
Lower Index Filter: (((jlong.d.client = jlong.o.client AND jlong.d.driver = jlong.o.code ) AND jlong.d.carrier = jlong.o.carrier ) AND jlong.d.location = jlong.o.location )
ON-Filters:(((jlong.d.client = jlong.o.client AND jlong.d.driver = jlong.o.code ) AND jlong.d.carrier = jlong.o.carrier ) AND jlong.d.location = jlong.o.location )
NESTED LOOP JOIN(LEFT OUTER JOIN)
Query statistics:
-----------------
Table map :
----------------------------
Internal name Table name
----------------------------
t1 d
t2 e
t3 o
type table rows_prod est_rows rows_scan time est_cost
-------------------------------------------------------------------
scan t1 603 71 742 00:00.00 122
type table rows_prod est_rows rows_scan time est_cost
-------------------------------------------------------------------
scan t2 1752 1597 1729 00:00.00 2
type rows_prod est_rows time est_cost
-------------------------------------------------
nljoin 876 1 00:00.00 254
type table rows_prod est_rows rows_scan time est_cost
-------------------------------------------------------------------
scan t3 1752 9862 876 00:00.00 1
type rows_prod est_rows time est_cost
-------------------------------------------------
nljoin 876 1 00:00.01 254
type rows_sort est_rows rows_cons time est_cost
------------------------------------------------------------
sort 876 1 876 00:00.01 0
Can anybody help to analyze the explain file and give the reason of different output?
Thanks

What's the easiest way to add custom page sizes to a .ppd?

I would like to add custom page sizes to my printer's .ppd (PostScript printer definition) file. What do I have to add to get a new page size working properly?
You have to add values for each additional page size at 4 different places:
for PageSize,
for PageRegion,
for ImageableArea and
for PaperDimension
Best, you take one PPD and search for sections enclosed in these keywords:
*OpenUI *PaperSize: PickOne
⋮
*CloseUI *PaperSize
*OpenUI *PageSize: PickOne
⋮
*CloseUI *PageSize
and for the sections starting with
*DefaultImageableArea: ...
*DefaultPaperDimension: ...
Use the lines you find in there as templates for your new entries. Note, that dimensions are given in PostScript points (where 72pt ≡ 1inch ≡ 2.54cm).
Caveats:
Add your new lines at each of the 4 places in the PPD.
Make sure you use unique names for your new media sizes.
Make sure you don't have any syntax errors in your PPD.
Once you're done (or while you're at editing it), check your PPD with the cupstestppd utility (available on Linux and on Mac OS X).
Update
Regarding testing the PPD with cupstestppd:
By default, this will report errors as **FAIL** even if it finds some "not-so-important" syntax issues (PPD string translations, filters, UIConstraints, profiles, media sizes). You can relax these strict checks a bit and use -W all in order to report all these as warnings only, not as errors:
cupstestppd -W all /path/to/PPDfile.ppd
If this returns lines saying WARN size ... you should pay close attention to them and make sure you fix the PPD.
I have HP LaserJet 1200. The PPD file provided by the Foomatic/pxlmono driver lacks some standard paper sizes. I updated it with the following statements:
*OpenUI *PageSize/Page Size: PickOne
*FoomaticRIPOption PageSize: enum CmdLine A
*OrderDependency: 100 AnySetup *PageSize
*DefaultPageSize: A4
*PageSize Letter/US Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter"
*FoomaticRIPOptionSetting PageSize=Letter: " -dDEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=792"
*End
*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive"
*FoomaticRIPOptionSetting PageSize=Executive: " -dDEVICEWIDTHPOINTS=522 -dDEVICEHEIGHTPOINTS=756"
*End
*PageSize Legal/US Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal"
*FoomaticRIPOptionSetting PageSize=Legal: " -dDEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=1008"
*End
*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4"
*FoomaticRIPOptionSetting PageSize=A4: " -dDEVICEWIDTHPOINTS=595 -dDEVICEHEIGHTPOINTS=842"
*End
*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5"
*FoomaticRIPOptionSetting PageSize=A5: " -dDEVICEWIDTHPOINTS=420 -dDEVICEHEIGHTPOINTS=595"
*End
*PageSize A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6"
*FoomaticRIPOptionSetting PageSize=A6: " -dDEVICEWIDTHPOINTS=298 -dDEVICEHEIGHTPOINTS=420"
*End
*PageSize A7/A7: "%% FoomaticRIPOptionSetting: PageSize=A7"
*FoomaticRIPOptionSetting PageSize=A7: " -dDEVICEWIDTHPOINTS=210 -dDEVICEHEIGHTPOINTS=298"
*End
*PageSize EnvISOB5/Envelope B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5"
*FoomaticRIPOptionSetting PageSize=EnvISOB5: " -dDEVICEWIDTHPOINTS=499 -dDEVICEHEIGHTPOINTS=709"
*End
*PageSize EnvISOB6/Envelope B6: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB6"
*FoomaticRIPOptionSetting PageSize=EnvISOB6: " -dDEVICEWIDTHPOINTS=354 -dDEVICEHEIGHTPOINTS=499"
*End
*PageSize EnvISOB7/Envelope B7: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB7"
*FoomaticRIPOptionSetting PageSize=EnvISOB7: " -dDEVICEWIDTHPOINTS=250 -dDEVICEHEIGHTPOINTS=354"
*End
*PageSize B5/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5"
*FoomaticRIPOptionSetting PageSize=B5: " -dDEVICEWIDTHPOINTS=516 -dDEVICEHEIGHTPOINTS=729"
*End
*PageSize B6/B6 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B6"
*FoomaticRIPOptionSetting PageSize=B6: " -dDEVICEWIDTHPOINTS=363 -dDEVICEHEIGHTPOINTS=516"
*End
*PageSize B7/B7 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B7"
*FoomaticRIPOptionSetting PageSize=B7: " -dDEVICEWIDTHPOINTS=258 -dDEVICEHEIGHTPOINTS=363"
*End
*PageSize Env10/Envelope #10: "%% FoomaticRIPOptionSetting: PageSize=Env10"
*FoomaticRIPOptionSetting PageSize=Env10: " -dDEVICEWIDTHPOINTS=297 -dDEVICEHEIGHTPOINTS=684"
*End
*PageSize EnvDL/Envelope DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL"
*FoomaticRIPOptionSetting PageSize=EnvDL: " -dDEVICEWIDTHPOINTS=312 -dDEVICEHEIGHTPOINTS=624"
*End
*PageSize EnvMonarch/Envelope Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch"
*FoomaticRIPOptionSetting PageSize=EnvMonarch: " -dDEVICEWIDTHPOINTS=279 -dDEVICEHEIGHTPOINTS=540"
*End
*PageSize EnvC5/Envelope C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5"
*FoomaticRIPOptionSetting PageSize=EnvC5: " -dDEVICEWIDTHPOINTS=459 -dDEVICEHEIGHTPOINTS=649"
*End
*PageSize EnvC6/Envelope C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6"
*FoomaticRIPOptionSetting PageSize=EnvC6: " -dDEVICEWIDTHPOINTS=323 -dDEVICEHEIGHTPOINTS=459"
*End
*PageSize EnvC7/Envelope C7: "%% FoomaticRIPOptionSetting: PageSize=EnvC7"
*FoomaticRIPOptionSetting PageSize=EnvC7: " -dDEVICEWIDTHPOINTS=230 -dDEVICEHEIGHTPOINTS=323"
*End
*CloseUI: *PageSize
*OpenUI *PageRegion: PickOne
*OrderDependency: 100 AnySetup *PageRegion
*DefaultPageRegion: A4
*PageRegion Letter/US Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter"
*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive"
*PageRegion Legal/US Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal"
*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4"
*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5"
*PageRegion A6/A6: "%% FoomaticRIPOptionSetting: PageSize=A6"
*PageRegion A7/A7: "%% FoomaticRIPOptionSetting: PageSize=A7"
*PageRegion EnvISOB5/Envelope B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5"
*PageRegion EnvISOB6/Envelope B6: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB6"
*PageRegion EnvISOB7/Envelope B7: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB7"
*PageRegion B5/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5"
*PageRegion B6/B6 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B6"
*PageRegion B7/B7 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B7"
*PageRegion Env10/Envelope #10: "%% FoomaticRIPOptionSetting: PageSize=Env10"
*PageRegion EnvDL/Envelope DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL"
*PageRegion EnvMonarch/Envelope Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch"
*PageRegion EnvC5/Envelope C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5"
*PageRegion EnvC6/Envelope C6: "%% FoomaticRIPOptionSetting: PageSize=EnvC6"
*PageRegion EnvC7/Envelope C7: "%% FoomaticRIPOptionSetting: PageSize=EnvC7"
*CloseUI: *PageRegion
*DefaultPaperDimension: A4
*PaperDimension Letter/US Letter: "612 792"
*PaperDimension Executive/Executive: "522 756"
*PaperDimension Legal/US Legal: "612 1008"
*PaperDimension A4/A4: "595 842"
*PaperDimension A5/A5: "420 595"
*PaperDimension A6/A6: "298 420"
*PaperDimension A7/A7: "210 298"
*PaperDimension EnvISOB5/Envelope B5: "499 709"
*PaperDimension EnvISOB6/Envelope B6: "354 499"
*PaperDimension EnvISOB7/Envelope B7: "250 354"
*PaperDimension B5/B5 (JIS): "516 729"
*PaperDimension B6/B6 (JIS): "363 516"
*PaperDimension B7/B7 (JIS): "258 363"
*PaperDimension Env10/Envelope #10: "297 684"
*PaperDimension EnvDL/Envelope DL: "312 624"
*PaperDimension EnvMonarch/Envelope Monarch: "279 540"
*PaperDimension EnvC5/Envelope C5: "459 649"
*PaperDimension EnvC6/Envelope C6: "323 459"
*PaperDimension EnvC7/Envelope C7: "230 323"
*DefaultImageableArea: A4
*ImageableArea Letter/US Letter: "18 36 594 756"
*ImageableArea Executive/Executive: "18 36 504 720"
*ImageableArea Legal/US Legal: "18 36 594 972"
*ImageableArea A4/A4: "18 36 577 806"
*ImageableArea A5/A5: "18 36 402 559"
*ImageableArea A6/A6: "18 36 280 384"
*ImageableArea A7/A7: "18 36 192 262"
*ImageableArea EnvISOB5/Envelope B5: "18 36 481 673"
*ImageableArea EnvISOB6/Envelope B6: "18 36 336 463"
*ImageableArea EnvISOB7/Envelope B7: "18 36 232 318"
*ImageableArea B5/B5 (JIS): "18 36 498 693"
*ImageableArea B6/B6 (JIS): "18 36 345 480"
*ImageableArea B7/B7 (JIS): "18 36 240 327"
*ImageableArea Env10/Envelope #10: "18 36 279 648"
*ImageableArea EnvDL/Envelope DL: "18 36 294 588"
*ImageableArea EnvMonarch/Envelope Monarch: "18 36 261 504"
*ImageableArea EnvC5/Envelope C5: "18 36 441 613"
*ImageableArea EnvC6/Envelope C6: "18 36 305 423"
*ImageableArea EnvC7/Envelope C7: "18 36 212 287"
If you're trying to print outside of the standard document length, for instance printing onto a roll.
open terminal, or command shell, or optional windows bash prompt
cd ..
cd ..
cd etc
cd cups
cd ppd
install vim first or use nano(program file editors)
(vim has a tutor just type vimtutor)
sudo vim Eastman_Kodak_Company_KODAK_ESP_3200_Series_AiO.ppd
scroll to the max height width and custom page params
i to insert
ESC to exit insert mode
:wq! to save and exit file
Note the width paramater will be named or in order of
width, height. The max width paramater should stay the same or it will throw the printers alignment off, but you can set the length to anything I believe. Then your printer will not create length boundaries in page setup and will allow you to print in continuous loop with no margin. Make sure your paper length is cut according to your page layout or it will simply spit out the rest of the roll.
This was my first try at it and I accidentally changed the width paramaters which were 712 I believe.
I have a Samsung printer so I downloaded the source code to the SpliX drivers. The driver source includes a Makefile to compile .ppd from sources that list the available page sizes much more succinctly. Now that missing paper size shows up in the print dialog's options.
(That did not solve my problem printing onto small paper. My real problem with custom paper sizes likely has something to do with the way applications talk to cups and the switch from .ps to .pdf as the preferred page input to cups in Ubuntu 9.04...)

Resources