This tutorial is for you if you need to use a richer set of SQL features such as data manipulation queries, parameterized queries and queries performed using SQL’s transaction features. See vignette("DBI", package = "DBI")
for a more basic tutorial covering connections and execution of simple queries.
dbGetQuery()
works by calling a number of functions behind the scenes. If you need more control, you can manually build your own query, retrieve results at your selected rate, and release the resources involved, by calling the same functions.
These functions are:
dbSendQuery()
sends the SQL query to the DBMS and returns a result
object. The query is limited to SELECT
statements. If you want to send other statements, such as INSERT
, UPDATE
, DELETE
, etc, use dbSendStatement()
.dbFetch()
is called with the result
object returned by dbSendQuery()
. It also accepts an argument specifying the number of rows to be returned, e.g. n = 200
. If you want to fetch all the rows, use n = -1
.dbClearResult()
is called when you have finished retrieving data. It releases the resources associated with the result
object.library(DBI)
<- dbConnect(
con ::MariaDB(),
RMariaDBhost = "relational.fit.cvut.cz",
port = 3306,
username = "guest",
password = "relational",
dbname = "sakila"
)
<- dbSendQuery(con, "SELECT * FROM film WHERE rating = 'G'")
res <- dbFetch(res, n = 3)
df dbClearResult(res)
head(df, 3)
## film_id title
## 1 2 ACE GOLDFINGER
## 2 4 AFFAIR PREJUDICE
## 3 5 AFRICAN EGG
## description
## 1 A Astounding Epistle of a Database Administrator And a Explorer who must Find a Car in Ancient China
## 2 A Fanciful Documentary of a Frisbee And a Lumberjack who must Chase a Monkey in A Shark Tank
## 3 A Fast-Paced Documentary of a Pastry Chef And a Dentist who must Pursue a Forensic Psychologist in The Gulf of Mexico
## release_year language_id original_language_id rental_duration rental_rate
## 1 2006 1 NA 3 4.99
## 2 2006 1 NA 5 2.99
## 3 2006 1 NA 6 2.99
## length replacement_cost rating special_features
## 1 48 12.99 G Trailers,Deleted Scenes
## 2 117 26.99 G Commentaries,Behind the Scenes
## 3 130 22.99 G Deleted Scenes
## last_update
## 1 2006-02-15 04:03:42
## 2 2006-02-15 04:03:42
## 3 2006-02-15 04:03:42
If your dataset is large you may want to fetch a limited number of rows at a time. As demonstrated below, this can be accomplished by using a while loop where the function dbHasCompleted()
is used to check for ongoing rows, and dbFetch()
is used with the n = X
argument, specifying how many rows to return on each iteration. Again, we call dbClearResult()
at the end to release resources.
<- dbSendQuery(con, "SELECT * FROM film")
res while (!dbHasCompleted(res)) {
<- dbFetch(res, n = 300)
chunk print(nrow(chunk))
}
## [1] 300
## [1] 300
## [1] 300
## [1] 100
dbClearResult(res)
dbSendQuery()
can be used with parameterized SQL queries. DBI supports two ways to avoid SQL injection attacks from user-supplied parameters: quoting and parameterized queries.
Quoting of parameter values is performed using the function dbQuoteLiteral()
, which supports many R data types, including date and time.1
In cases where users may be supplying table or column names to use in the query for data retrieval, those names, or identifiers, must also be escaped. As there may be DBMS-specific rules for escaping these identifiers, DBI provides the function dbQuoteIdentifier()
to generate a safe string representation.
<- dbQuoteIdentifier(con, "rating")
safe_id <- dbQuoteLiteral(con, "G")
safe_param
<- paste0("SELECT title, ", safe_id, " FROM film WHERE ", safe_id, " = ", safe_param )
query query
## [1] "SELECT title, `rating` FROM film WHERE `rating` = 'G'"
<- dbSendQuery(con, query)
res dbFetch(res)
## title rating
## 1 ACE GOLDFINGER G
## 2 AFFAIR PREJUDICE G
## 3 AFRICAN EGG G
## Showing 3 out of 178 rows.
dbClearResult(res)
The same result can be had by using glue::glue_sql()
. It performs the same safe quoting on any variable or R statement appearing between braces within the query string.
<- "rating"
id <- "G"
param <- glue::glue_sql("SELECT title, {`id`} FROM film WHERE {`id`} = {param}", .con = con)
query
<- dbGetQuery(con, query)
df head(df, 3)
## title rating
## 1 ACE GOLDFINGER G
## 2 AFFAIR PREJUDICE G
## 3 AFRICAN EGG G
Rather than performing the parameter substitution ourselves, we can push it to the DBMS by including placeholders in the query. Different DBMS use different placeholder schemes, DBI passes through the SQL expression. MariaDB uses a ?
for each parameter and expects an unnamed list of literal values for each placeholder in the query. Other DBMS may use named parameters. Currently there is no list of which placeholder scheme a particular DBMS supports. For now all we can recommend is consulting the documentation for the DBMS driver you are using.
Placeholders only work for literal values. Other parts of the query, e.g. table or column identifiers, still need to be quoted with dbQuoteIdentifier()
.
For a single set of parameters, the params
argument to dbSendQuery()
or dbGetQuery()
can be used. It takes a list and its members are substituted in order for the placeholders within the query.
<- list("G")
params <- dbQuoteIdentifier(con, "rating")
safe_id
<- paste("SELECT * FROM film WHERE ", safe_id, " = ?")
query query
## [1] "SELECT * FROM film WHERE `rating` = ?"
<- dbSendQuery(con, query, params = params)
res dbFetch(res, n = 3)
## film_id title
## 1 2 ACE GOLDFINGER
## 2 4 AFFAIR PREJUDICE
## 3 5 AFRICAN EGG
## description
## 1 A Astounding Epistle of a Database Administrator And a Explorer who must Find a Car in Ancient China
## 2 A Fanciful Documentary of a Frisbee And a Lumberjack who must Chase a Monkey in A Shark Tank
## 3 A Fast-Paced Documentary of a Pastry Chef And a Dentist who must Pursue a Forensic Psychologist in The Gulf of Mexico
## release_year language_id original_language_id rental_duration rental_rate
## 1 2006 1 NA 3 4.99
## 2 2006 1 NA 5 2.99
## 3 2006 1 NA 6 2.99
## length replacement_cost rating special_features
## 1 48 12.99 G Trailers,Deleted Scenes
## 2 117 26.99 G Commentaries,Behind the Scenes
## 3 130 22.99 G Deleted Scenes
## last_update
## 1 2006-02-15 04:03:42
## 2 2006-02-15 04:03:42
## 3 2006-02-15 04:03:42
dbClearResult(res)
Below is an example query using multiple placeholders with the MariaDB driver. The placeholders are supplied as a list of values ordered to match the position of the placeholders in the query.
<- list('G', 90)
q_params <- paste("SELECT title, rating, length FROM film WHERE rating = ? and length >= ?")
query
<- dbSendQuery(con, query, params = q_params)
res dbFetch(res, n = 3)
## title rating length
## 1 AFFAIR PREJUDICE G 117
## 2 AFRICAN EGG G 130
## 3 ALAMO VIDEOTAPE G 126
dbClearResult(res)
When you wish to perform the same query with different sets of parameter values, dbBind()
is used. There are two ways to use dbBind()
. Firstly, it can be used multiple times with same query.
<- dbSendQuery(con, "SELECT * FROM film WHERE rating = ?")
res dbBind(res, list("G"))
dbFetch(res, n = 3)
## film_id title
## 1 2 ACE GOLDFINGER
## 2 4 AFFAIR PREJUDICE
## 3 5 AFRICAN EGG
## description
## 1 A Astounding Epistle of a Database Administrator And a Explorer who must Find a Car in Ancient China
## 2 A Fanciful Documentary of a Frisbee And a Lumberjack who must Chase a Monkey in A Shark Tank
## 3 A Fast-Paced Documentary of a Pastry Chef And a Dentist who must Pursue a Forensic Psychologist in The Gulf of Mexico
## release_year language_id original_language_id rental_duration rental_rate
## 1 2006 1 NA 3 4.99
## 2 2006 1 NA 5 2.99
## 3 2006 1 NA 6 2.99
## length replacement_cost rating special_features
## 1 48 12.99 G Trailers,Deleted Scenes
## 2 117 26.99 G Commentaries,Behind the Scenes
## 3 130 22.99 G Deleted Scenes
## last_update
## 1 2006-02-15 04:03:42
## 2 2006-02-15 04:03:42
## 3 2006-02-15 04:03:42
dbBind(res, list("PG"))
dbFetch(res, n = 3)
## film_id title
## 1 1 ACADEMY DINOSAUR
## 2 6 AGENT TRUMAN
## 3 12 ALASKA PHANTOM
## description
## 1 A Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies
## 2 A Intrepid Panorama of a Robot And a Boy who must Escape a Sumo Wrestler in Ancient China
## 3 A Fanciful Saga of a Hunter And a Pastry Chef who must Vanquish a Boy in Australia
## release_year language_id original_language_id rental_duration rental_rate
## 1 2006 1 NA 6 0.99
## 2 2006 1 NA 3 2.99
## 3 2006 1 NA 6 0.99
## length replacement_cost rating special_features
## 1 86 20.99 PG Deleted Scenes,Behind the Scenes
## 2 169 17.99 PG Deleted Scenes
## 3 136 22.99 PG Commentaries,Deleted Scenes
## last_update
## 1 2006-02-15 04:03:42
## 2 2006-02-15 04:03:42
## 3 2006-02-15 04:03:42
dbClearResult(res)
Secondly, dbBind()
can be used to execute the same statement with multiple values at once.
<- dbSendQuery(con, "SELECT * FROM film WHERE rating = ?")
res dbBind(res, list(c("G", "PG")))
dbFetch(res, n = 3)
## film_id title
## 1 2 ACE GOLDFINGER
## 2 4 AFFAIR PREJUDICE
## 3 5 AFRICAN EGG
## description
## 1 A Astounding Epistle of a Database Administrator And a Explorer who must Find a Car in Ancient China
## 2 A Fanciful Documentary of a Frisbee And a Lumberjack who must Chase a Monkey in A Shark Tank
## 3 A Fast-Paced Documentary of a Pastry Chef And a Dentist who must Pursue a Forensic Psychologist in The Gulf of Mexico
## release_year language_id original_language_id rental_duration rental_rate
## 1 2006 1 NA 3 4.99
## 2 2006 1 NA 5 2.99
## 3 2006 1 NA 6 2.99
## length replacement_cost rating special_features
## 1 48 12.99 G Trailers,Deleted Scenes
## 2 117 26.99 G Commentaries,Behind the Scenes
## 3 130 22.99 G Deleted Scenes
## last_update
## 1 2006-02-15 04:03:42
## 2 2006-02-15 04:03:42
## 3 2006-02-15 04:03:42
dbClearResult(res)
Always disconnect from the database when done.
dbDisconnect(con)
For SQL queries that affect the underlying database, such as UPDATE, DELETE, INSERT INTO, and DROP TABLE, DBI provides two functions. dbExecute()
passes the SQL statement to the DBMS for execution and returns the number of rows affected. dbSendStatement()
performs in the same manner, but returns a result object. Call dbGetRowsAffected()
with the result object to get the count of the affected rows. You then need to call dbClearResult()
with the result object afterwards to release resources.
In actuality, dbExecute()
is a convenience function that calls dbSendStatement()
, dbGetRowsAffected()
, and dbClearResult()
. You can use these functions if you need more control over the query process.
The subsequent examples use an in-memory SQL database provided by RSQLite::SQLite()
, because the remote database used in above examples does not allow writing.
library(DBI)
<- dbConnect(RSQLite::SQLite(), ":memory:")
con
dbWriteTable(con, "cars", head(cars, 3))
dbExecute(
con,"INSERT INTO cars (speed, dist) VALUES (1, 1), (2, 2), (3, 3)"
)
## [1] 3
<- dbSendStatement(
rs
con,"INSERT INTO cars (speed, dist) VALUES (4, 4), (5, 5), (6, 6)"
)dbGetRowsAffected(rs)
## [1] 3
dbClearResult(rs)
dbReadTable(con, "cars")
## speed dist
## 1 4 2
## 2 4 10
## 3 7 4
## Showing 3 out of 9 rows.
dbDisconnect(con)
DBI allows you to group multiple queries into a single atomic transaction. Transactions are initiated with dbBegin()
and either made persistent with dbCommit()
or undone with dbRollback()
. The example below updates two tables and ensures that either both tables are updated, or no changes are persisted to the database and an error is thrown.
<- dbConnect(RSQLite::SQLite(), ":memory:")
con
dbWriteTable(con, "cash", data.frame(amount = 100))
dbWriteTable(con, "account", data.frame(amount = 2000))
<- function(amount) {
withdraw # All operations are carried out as logical unit:
dbExecute(con, "UPDATE cash SET amount = amount + ?", list(amount))
dbExecute(con, "UPDATE account SET amount = amount - ?", list(amount))
}
<- function(amount) {
withdraw_transacted dbBegin(con)
withdraw(amount)
dbCommit(con)
}
withdraw(300)
## [1] 1
dbReadTable(con, "cash")
## amount
## 1 400
dbReadTable(con, "account")
## amount
## 1 1700
We can roll back changes manually if necessary. Do not forget to call dbRollback()
in case of error, otherwise the transaction remains open indefinitely.
<- function(amount) {
withdraw_if_funds dbBegin(con)
withdraw(amount)
# Rolling back after detecting negative value on account:
if (dbReadTable(con, "account")$amount >= 0) {
dbCommit(con)
TRUE
else {
} message("Insufficient funds")
dbRollback(con)
FALSE
}
}
withdraw_if_funds(5000)
## Insufficient funds
## [1] FALSE
dbReadTable(con, "cash")
## amount
## 1 400
dbReadTable(con, "account")
## amount
## 1 1700
Use dbWithTransaction()
as a safe way to open a transaction, call dbCommit()
on success and call dbRollback()
on error.
<- function(amount) {
withdraw_safely dbWithTransaction(con, {
withdraw(amount)
if (dbReadTable(con, "account")$amount < 0) {
stop("Error: insufficient funds", call. = FALSE)
}
})
}
withdraw_safely(5000)
## Error: Error: insufficient funds
dbReadTable(con, "cash")
## amount
## 1 400
dbReadTable(con, "account")
## amount
## 1 1700
As usual, do not forget to disconnect from the database when done.
dbDisconnect(con)
That concludes the major features of DBI. For more details on the library functions covered in this tutorial and the vignette("DBI", package = "DBI")
introductory tutorial see the DBI specification at vignette("spec", package = "DBI")
. If you are after a data manipulation library that works at a higher level of abstraction, check out dplyr. It is a grammar of data manipulation that can work with local dataframes and remote databases and uses DBI under the hood.
An older method, dbQuoteString()
, was used to quote string values only. The dbQuoteLiteral()
method forwards to dbQuoteString()
for character vectors, users do not need to distinguish between these two cases.↩


404
You are either trying to configure something incorrectly or you're someone who should not be here, which one is it?


As the world becomes increasingly digital, how do we ensure that BIPOC folx can have critical discussions about technology, find community supports for navigating racism in the industry, and connect with each other openly and honestly?
This is a full-day event, so feel free to join us for one session, or the entire day.
> The morning session will explore what digital justice looks like for BIPOC communities.
How do design and tech industries perpetuate white supremacy and colonialism? What does racial justice activism look like in the digital age? What does creating dedicated digital spaces for communities of colour look like? These topics topic will be examined through a keynote address, and series of lightning talks from BIPOC community members.
> In the afternoon, we'll have group discussions on navigating workplace dynamics as BIPOC.
We’ll explore how to gain professional power outside of work, as well as strategies for combating performative “Diversity & Inclusion” initiatives. Our community will share lived experiences and challenges, collaborating on building solutions for hope, healing and empowerment in the workplace.
* NOTE: This event is closed to people who identify as Black, Indigenous, and/or people of colour. Please register for this event only if you identify as BIPOC.
> Transit
The closest subway station is St. Patrick station. If the cost of TTC fare is a barrier to attending, please email intersectto[at]gmail[dot]com and we will do our best to accomodate!
> Accessibility
There is an accessibility ramp outside of 100 McCaul. There are accessible washrooms outside the main theatre in 100 McCaul. There is an elevator within this building for access to the second breakout room located on the second floor.
We will have ASL interpretation for both morning and afternoon sessions. Please get in touch with organizers through intersectto(at)gmail.com if you have additional access needs.
> Washrooms
There are gender neutral washrooms in the same location as the accessible washrooms outside the main theatre.
[ Sign-in and light breakfast will begin at 9:30am ]
10 : 00 AM - 10:15 AM
About IntersectTO, quick housekeeping, and overview of the day
10 : 15 AM - 11 : 00 AM
What does it mean to be truly inclusive in design? How do values that we hold as individuals translate to the experiences we design for? For this talk, Dean of OCAD University's Faculty of Design, Dori Tunstall walks us through the values aligned with decolonization and how to put them into praxis. Why should you attend? Dori will demystify how trends of “Diversity and Inclusion” are not the only solutions for creating inclusive design spaces. As the the first Black, and Black female Dean of Faculty of Design anywhere, Dori offers a unique perspective on recognizing key barriers and creating new paths towards inclusion in design conversation.
11 : 00 AM - 12 : 15 PM
13 minute talks by BIPOC folx on race, power, and digital justice
Our speakers include:
> Daniella Barreto
> Yasmin Dini
> Jasmine Gui and Kelly Lui (TACLA initiative)
> Ayat Salih
> Dumo G.
12 : 15 PM - 1 : 15 PM
Lunch catered by the Afghan Women's Catering Group.
1 : 15 PM - 2 : 30 PM
Participants will have the option of joining one of two small group discussion topics:
> How can we combat performative “Diversity & Inclusion” initiatives in our workplaces and fields?
> How can BIPOC gain professional power outside of work that can be leveraged for better internal and external career opportunities?
The goal is to share space, stories, and collaboratively build strategies together during this session.
2 : 30 PM - 2 : 50 PM
Groups will convene back in the auditorium for a discussion of key highlights and takeaways
2 : 50 PM - 3 : 00 PM
Thank you's!
> Discrimination and harassment will not be tolerated. This will not be a space for language, behaviour, or attitudes that are racist, sexist, homophobic, transphobic, Islamophobic, ableist, or classist. Physical and/or sexual harassment will not be tolerated.
> Be mindful of how much space you are taking up. We’ll prioritize questions from folks who are Black, Indigenous, WOC, and QTPOC during audience Q&A.
> Don’t assume folks’ pronouns. Please pay attention to what’s written on their name tag, and use they/them if they haven’t specified.
> Be respectful participants and audience members. The event's speakers and facilitators are being generous with their time, energy, and ideas!
If you are experiencing, or have experienced, discrimination and/or harrasment from another participant, you can contact one of the organizers or email intersectto(at)gmail(dot)com, and we will work within our capacity to address your needs and ensure that IntersectTO can continue being a safer space for you.
We feel so fortunate to have a talented group of facilitators help guide our afternoon discussions. They each bring their unique experiences from across tech, nonprofits, and community arts spaces.
> How can we combat performative “Diversity & Inclusion” initiatives in our workplaces and fields? facilitated by: Diana Yoon, Shaquilla Singh, and Fatima Barron
> How can BIPOC gain professional power outside of work that can be leveraged for better internal and external career opportunities? facilitated by: Chloe Kirlew, Kerry-Ann Douglas-Powell, Gerri Lutaaya, and I-Yana Tucker
Aljumaine Gayle, Emily Nguyen, Melissa Haughton, Nandita Bijur, Jennifer Cao, Hazelmae Valenzuela, Lorraine Chuen


| DOSE: |
300 mg |
oral |
DMAE |
(daily) |
Recently read an article about DMAE stating that it helped brain function and cognitive ability. After years of self inflicted brain damage by means of MDMA and such, I decided to take something that might reverse the effects.
I started on 200mg daily and kept that dosage up for about a week. My initial reaction was positive although mild. I noticed that my dreams became more vivid as well as memorable and my thoughts seemed slightly clearer but not by much. I experienced the biggest effects when I up the dosage to 300mg's on the second week. For the next three weeks I experienced much clearer thoughts, felt more awake during the day, improved memory and an over all sense of well being. I would like to point out that before this experiment with DMAE my cognitive function was useless as I could hardly think straight and had no memory to speak of.
I am now into my sixth week of DMAE and I am still on 300mg per day. It does not seem to affect nor boost me as it did during that first four weeks. My dreams have lost some of there vividness and my concentration levels seem to be ebbing. I do still feel that it is worth taking and that the drug is helping me in ways that might be more subtle then before but they are still there.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


share pie
Your browser does not support the HTML5 canvas tag.
salary pie
Your browser does not support the HTML5 canvas tag.


UserName
Password
Sign in
Create Live Chat Account
User Name
Email address
Password
Retype Password
Sign in


Reports on any duplicate conditions among different branches of an
if statement. While it may rarely be the
desired semantics, duplicate conditions usually represent programmer oversight.
Use the checkbox below to let this inspection ignore conditions which may produce side effects.
Unchecking this checkbox may lead to some false-positives, e.g. when the same method call returns different values on subsequent invocations.


Interface XSConstants
-
public interface XSConstants
This interface defines constants used by this specification.
-
-
Field Summary
Fields Modifier and Type Field Description static short
ANNOTATION
The object describes an annotation.static short
ANYSIMPLETYPE_DT
anySimpleTypestatic short
ANYURI_DT
anyURIstatic short
ATTRIBUTE_DECLARATION
The object describes an attribute declaration.static short
ATTRIBUTE_GROUP
The object describes an attribute group definition.static short
ATTRIBUTE_USE
The object describes an attribute use definition.static short
BASE64BINARY_DT
base64Binarystatic short
BOOLEAN_DT
booleanstatic short
BYTE_DT
bytestatic short
DATE_DT
datestatic short
DATETIME_DT
dateTimestatic short
DECIMAL_DT
decimalstatic short
DERIVATION_EXTENSION
XSTypeDefinition
final set orXSElementDeclaration
disallowed substitution group.static short
DERIVATION_LIST
XSTypeDefinition
final set.static short
DERIVATION_NONE
No constraint is available.static short
DERIVATION_RESTRICTION
XSTypeDefinition
final set orXSElementDeclaration
disallowed substitution group.static short
DERIVATION_SUBSTITUTION
XSTypeDefinition
final set.static short
DERIVATION_UNION
XSTypeDefinition
final set.static short
DOUBLE_DT
doublestatic short
DURATION_DT
durationstatic short
ELEMENT_DECLARATION
The object describes an element declaration.static short
ENTITY_DT
ENTITYstatic short
FACET
The object describes a constraining facet.static short
FLOAT_DT
floatstatic short
GDAY_DT
gDaystatic short
GMONTH_DT
gMonthstatic short
GMONTHDAY_DT
gMonthDaystatic short
GYEAR_DT
gYearstatic short
GYEARMONTH_DT
gYearMonthstatic short
HEXBINARY_DT
hexBinarystatic short
ID_DT
IDstatic short
IDENTITY_CONSTRAINT
The object describes an identity constraint definition.static short
IDREF_DT
IDREFstatic short
INT_DT
intstatic short
INTEGER_DT
integerstatic short
LANGUAGE_DT
languagestatic short
LIST_DT
The type represents a list type definition.static short
LISTOFUNION_DT
The type represents a list type definition whose item type (itemType) is a union type definitionstatic short
LONG_DT
longstatic short
MODEL_GROUP
A model group.static short
MODEL_GROUP_DEFINITION
The object describes a model group definition.static short
MULTIVALUE_FACET
The object describes enumeration and pattern facets.static short
NAME_DT
Namestatic short
NCNAME_DT
NCNamestatic short
NEGATIVEINTEGER_DT
negativeIntegerstatic short
NMTOKEN_DT
NMTOKENstatic short
NONNEGATIVEINTEGER_DT
nonNegativeIntegerstatic short
NONPOSITIVEINTEGER_DT
nonPositiveIntegerstatic short
NORMALIZEDSTRING_DT
normalizedStringstatic short
NOTATION_DECLARATION
The object describes a notation declaration.static short
NOTATION_DT
NOTATIONstatic short
PARTICLE
The object describes a particle.static short
POSITIVEINTEGER_DT
positiveIntegerstatic short
QNAME_DT
QNamestatic short
SCOPE_ABSENT
The scope of a declaration within named model groups or attribute groups isabsent
.static short
SCOPE_GLOBAL
A scope ofglobal
identifies top-level declarations.static short
SCOPE_LOCAL
Locally scoped
declarations are available for use only within the complex type.static short
SHORT_DT
shortstatic short
STRING_DT
stringstatic short
TIME_DT
timestatic short
TOKEN_DT
tokenstatic short
TYPE_DEFINITION
The object describes a complex type or simple type definition.static short
UNAVAILABLE_DT
The built-in type category is not available.static short
UNSIGNEDBYTE_DT
unsignedBytestatic short
UNSIGNEDINT_DT
unsignedIntstatic short
UNSIGNEDLONG_DT
unsignedLongstatic short
UNSIGNEDSHORT_DT
unsignedShortstatic short
VC_DEFAULT
Indicates that there is a default value constraint.static short
VC_FIXED
Indicates that there is a fixed value constraint for this attribute.static short
VC_NONE
Indicates that the component does not have any value constraint.static short
WILDCARD
The object describes a wildcard.
-
-
-
Field Detail
-
ATTRIBUTE_DECLARATION
static final short ATTRIBUTE_DECLARATION
The object describes an attribute declaration.- See Also:
- Constant Field Values
-
ELEMENT_DECLARATION
static final short ELEMENT_DECLARATION
The object describes an element declaration.- See Also:
- Constant Field Values
-
TYPE_DEFINITION
static final short TYPE_DEFINITION
The object describes a complex type or simple type definition.- See Also:
- Constant Field Values
-
ATTRIBUTE_USE
static final short ATTRIBUTE_USE
The object describes an attribute use definition.- See Also:
- Constant Field Values
-
ATTRIBUTE_GROUP
static final short ATTRIBUTE_GROUP
The object describes an attribute group definition.- See Also:
- Constant Field Values
-
MODEL_GROUP_DEFINITION
static final short MODEL_GROUP_DEFINITION
The object describes a model group definition.- See Also:
- Constant Field Values
-
MODEL_GROUP
static final short MODEL_GROUP
A model group.- See Also:
- Constant Field Values
-
PARTICLE
static final short PARTICLE
The object describes a particle.- See Also:
- Constant Field Values
-
WILDCARD
static final short WILDCARD
The object describes a wildcard.- See Also:
- Constant Field Values
-
IDENTITY_CONSTRAINT
static final short IDENTITY_CONSTRAINT
The object describes an identity constraint definition.- See Also:
- Constant Field Values
-
NOTATION_DECLARATION
static final short NOTATION_DECLARATION
The object describes a notation declaration.- See Also:
- Constant Field Values
-
ANNOTATION
static final short ANNOTATION
The object describes an annotation.- See Also:
- Constant Field Values
-
FACET
static final short FACET
The object describes a constraining facet. Note: this object does not describe pattern and enumeration facets.- See Also:
- Constant Field Values
-
MULTIVALUE_FACET
static final short MULTIVALUE_FACET
The object describes enumeration and pattern facets.- See Also:
- Constant Field Values
-
DERIVATION_NONE
static final short DERIVATION_NONE
No constraint is available.- See Also:
- Constant Field Values
-
DERIVATION_EXTENSION
static final short DERIVATION_EXTENSION
XSTypeDefinition
final set orXSElementDeclaration
disallowed substitution group.- See Also:
- Constant Field Values
-
DERIVATION_RESTRICTION
static final short DERIVATION_RESTRICTION
XSTypeDefinition
final set orXSElementDeclaration
disallowed substitution group.- See Also:
- Constant Field Values
-
DERIVATION_SUBSTITUTION
static final short DERIVATION_SUBSTITUTION
XSTypeDefinition
final set.- See Also:
- Constant Field Values
-
DERIVATION_UNION
static final short DERIVATION_UNION
XSTypeDefinition
final set.- See Also:
- Constant Field Values
-
DERIVATION_LIST
static final short DERIVATION_LIST
XSTypeDefinition
final set.- See Also:
- Constant Field Values
-
SCOPE_ABSENT
static final short SCOPE_ABSENT
The scope of a declaration within named model groups or attribute groups isabsent
. The scope of such a declaration is determined when it is used in the construction of complex type definitions.- See Also:
- Constant Field Values
-
SCOPE_GLOBAL
static final short SCOPE_GLOBAL
A scope ofglobal
identifies top-level declarations.- See Also:
- Constant Field Values
-
SCOPE_LOCAL
static final short SCOPE_LOCAL
Locally scoped
declarations are available for use only within the complex type.- See Also:
- Constant Field Values
-
VC_NONE
static final short VC_NONE
Indicates that the component does not have any value constraint.- See Also:
- Constant Field Values
-
VC_DEFAULT
static final short VC_DEFAULT
Indicates that there is a default value constraint.- See Also:
- Constant Field Values
-
VC_FIXED
static final short VC_FIXED
Indicates that there is a fixed value constraint for this attribute.- See Also:
- Constant Field Values
-
ANYSIMPLETYPE_DT
static final short ANYSIMPLETYPE_DT
anySimpleType- See Also:
- Constant Field Values
-
STRING_DT
static final short STRING_DT
string- See Also:
- Constant Field Values
-
BOOLEAN_DT
static final short BOOLEAN_DT
boolean- See Also:
- Constant Field Values
-
DECIMAL_DT
static final short DECIMAL_DT
decimal- See Also:
- Constant Field Values
-
FLOAT_DT
static final short FLOAT_DT
float- See Also:
- Constant Field Values
-
DOUBLE_DT
static final short DOUBLE_DT
double- See Also:
- Constant Field Values
-
DURATION_DT
static final short DURATION_DT
duration- See Also:
- Constant Field Values
-
DATETIME_DT
static final short DATETIME_DT
dateTime- See Also:
- Constant Field Values
-
TIME_DT
static final short TIME_DT
time- See Also:
- Constant Field Values
-
DATE_DT
static final short DATE_DT
date- See Also:
- Constant Field Values
-
GYEARMONTH_DT
static final short GYEARMONTH_DT
gYearMonth- See Also:
- Constant Field Values
-
GYEAR_DT
static final short GYEAR_DT
gYear- See Also:
- Constant Field Values
-
GMONTHDAY_DT
static final short GMONTHDAY_DT
gMonthDay- See Also:
- Constant Field Values
-
GDAY_DT
static final short GDAY_DT
gDay- See Also:
- Constant Field Values
-
GMONTH_DT
static final short GMONTH_DT
gMonth- See Also:
- Constant Field Values
-
HEXBINARY_DT
static final short HEXBINARY_DT
hexBinary- See Also:
- Constant Field Values
-
BASE64BINARY_DT
static final short BASE64BINARY_DT
base64Binary- See Also:
- Constant Field Values
-
ANYURI_DT
static final short ANYURI_DT
anyURI- See Also:
- Constant Field Values
-
QNAME_DT
static final short QNAME_DT
QName- See Also:
- Constant Field Values
-
NOTATION_DT
static final short NOTATION_DT
NOTATION- See Also:
- Constant Field Values
-
NORMALIZEDSTRING_DT
static final short NORMALIZEDSTRING_DT
normalizedString- See Also:
- Constant Field Values
-
TOKEN_DT
static final short TOKEN_DT
token- See Also:
- Constant Field Values
-
LANGUAGE_DT
static final short LANGUAGE_DT
language- See Also:
- Constant Field Values
-
NMTOKEN_DT
static final short NMTOKEN_DT
NMTOKEN- See Also:
- Constant Field Values
-
NAME_DT
static final short NAME_DT
Name- See Also:
- Constant Field Values
-
NCNAME_DT
static final short NCNAME_DT
NCName- See Also:
- Constant Field Values
-
ID_DT
static final short ID_DT
ID- See Also:
- Constant Field Values
-
IDREF_DT
static final short IDREF_DT
IDREF- See Also:
- Constant Field Values
-
ENTITY_DT
static final short ENTITY_DT
ENTITY- See Also:
- Constant Field Values
-
INTEGER_DT
static final short INTEGER_DT
integer- See Also:
- Constant Field Values
-
NONPOSITIVEINTEGER_DT
static final short NONPOSITIVEINTEGER_DT
nonPositiveInteger- See Also:
- Constant Field Values
-
NEGATIVEINTEGER_DT
static final short NEGATIVEINTEGER_DT
negativeInteger- See Also:
- Constant Field Values
-
LONG_DT
static final short LONG_DT
long- See Also:
- Constant Field Values
-
INT_DT
static final short INT_DT
int- See Also:
- Constant Field Values
-
SHORT_DT
static final short SHORT_DT
short- See Also:
- Constant Field Values
-
BYTE_DT
static final short BYTE_DT
byte- See Also:
- Constant Field Values
-
NONNEGATIVEINTEGER_DT
static final short NONNEGATIVEINTEGER_DT
nonNegativeInteger- See Also:
- Constant Field Values
-
UNSIGNEDLONG_DT
static final short UNSIGNEDLONG_DT
unsignedLong- See Also:
- Constant Field Values
-
UNSIGNEDINT_DT
static final short UNSIGNEDINT_DT
unsignedInt- See Also:
- Constant Field Values
-
UNSIGNEDSHORT_DT
static final short UNSIGNEDSHORT_DT
unsignedShort- See Also:
- Constant Field Values
-
UNSIGNEDBYTE_DT
static final short UNSIGNEDBYTE_DT
unsignedByte- See Also:
- Constant Field Values
-
POSITIVEINTEGER_DT
static final short POSITIVEINTEGER_DT
positiveInteger- See Also:
- Constant Field Values
-
LISTOFUNION_DT
static final short LISTOFUNION_DT
The type represents a list type definition whose item type (itemType) is a union type definition- See Also:
- Constant Field Values
-
LIST_DT
static final short LIST_DT
The type represents a list type definition.- See Also:
- Constant Field Values
-
UNAVAILABLE_DT
static final short UNAVAILABLE_DT
The built-in type category is not available.- See Also:
- Constant Field Values
-
-


Objective
Innovative programmer looking for opportunity on a collaborative team that prioritizes sustainable innovation and software craftsmanship. With 13 years experience, I am looking for the freedom to solve real problems in an open, honest forum with a healthy work/life balance.
Accomplishments & Notable Projects
- Lead a full-stack development team building a new, global sign-up process which improved conversion rates by 50% and decreased maintenance costs.
- Rapidly delivered an enterprise-wide integration with a new, API-driven payment solution.
- Guided transition from a monolithic, Java/Spring stack to a simpler, Kotlin-based microservice model.
- Pioneered the BYU Web Brand framework and a git-based CDN that allowed for fast pageloads and timely updates and bugfixes (btc.thatjoemoore.com and cdn.thatjoemoore.com).
- Received two BYU Staff and Administrative Employee Recognition Awards and a Nu Skin Pinnacle award.
Professional Experience
Nu Skin Enterprises
Senior Software Engineer/Tech Lead 2019 - Present
- Lead a cross-functional team building applications in Vue and Node.
- Championed Continuous Deployment and automated testing practices.
- Built internal tools for improving automated testing and use of feature flags in frontend applications.
- Created solutions for securing critical services and applications against abuse.
Brigham Young University Office of IT
Software Developer 2012 - 2019
Student Developer 2008 - 2012
- Lead small project teams in design, development, and maintenance of full-stack applications in Java, Kotlin, Node, and Vue.
- Collaborated with campus community to design and implement a cross-framework web brand.
- Architected and crafted shared infrastructure and deployment tooling.
- Mentored junior developers and student developers.


| Introduction to Analyzer Reports |
What's an Analyzer Report?An Analyzer report is a collection of fields and filters that is displayed in a specific report format. You can think of a report as a file (like an Excel file), except that when you open a report or make a change, the report connects to your database so it displays the latest data. Reports are stored in the Pentaho solution repository, so you can access reports from any computer. When you create a new Analyzer report from the ground up, you select a cube first. This choice determines which fields will be available when you build your report. For example, if you choose orders as your analysis area, you most likely will see all fields related to orders. Where Does the Data Come From?Pentaho Analyzer leverages OLAP technology and multi-dimensional query expressions (MDX) to dynamically retrieve data from relational databases (RDBMS). Analyzer is most often used to query data in an organizationís data warehouse, which generally consolidates data from multiple source systems into a common place for information analysis and reporting. Pentaho Data Integration is a popular ETL tool used for building and populating data warehouses. Pentaho Data Integration can load data from applications, databases, and spreadsheets within your company, as well as from external and public data sources. This is managed by your administrator. See The Big Picture. You can easily view the description of a specific field. See Viewing the Definition of a Field. A Look at the View Report PageWith Pentaho Analyzer, you build your report and view the results using the same web page, which has three main sections:
Getting the Report You Want
After this warm-up, you should be ready to play around with report options or start creating reports for use by others. |
Related Topics |
|
|


|
CmdMessenger
3.0
CmdMessenger is a serial port messaging library for the .Net / Mono Platform.
|
Public Member Functions | |
| void | StartConnectionManager () |
| Start connection manager. Will set up thread, but will not start scanning. | |
| void | StopConnectionManager () |
| Stop connection manager. | |
| void | SetControlToInvokeOn (Control controlToInvokeOn) |
| Sets a control to invoke on. | |
| bool | ArduinoAvailable (int timeOut) |
| Check if Arduino is available. | |
| bool | ArduinoAvailable (int timeOut, int tries) |
| bool | Disconnect () |
| Disconnect from Arduino. | |
| void | StartWatchDog () |
| Start watchdog. Will check if connection gets interrupted. | |
| void | StopWatchDog () |
| Stop watchdog. | |
| void | StopScan () |
| Stop scanning for devices. | |
| void | StartScan () |
| Start scanning for devices. | |
| void | Dispose () |
Protected Member Functions | |
| ConnectionManager (CmdMessenger cmdMessenger, int challengeCommandId, int responseCommandId) | |
| void | InvokeEvent (EventHandler eventHandler) |
| void | ConnectionFoundEvent () |
| void | InvokeEvent< TEventHandlerArguments > (EventHandler< TEventHandlerArguments > eventHandler, TEventHandlerArguments eventHandlerArguments) |
| void | Log (int level, string logMessage) |
| virtual void | DoWorkScan () |
| virtual void | Dispose (bool disposing) |
Protected Attributes | |
| Control | ControlToInvokeOn |
| readonly CmdMessenger | CmdMessenger |
| ConnectionManagerStates | ConnectionManagerState |
Properties | |
| bool | Connected [get, set] |
| long | WatchdogTimeOut [get, set] |
| long | WatchdogRetryTimeOut [get, set] |
| uint | MaxWatchdogTries [get, set] |
Events | |
| EventHandler | ConnectionTimeout |
| EventHandler | ConnectionFound |
|
EventHandler < ConnectionManagerProgressEventArgs > | Progress |
| bool CommandMessenger.ConnectionManager.ArduinoAvailable | ( | int | timeOut | ) |
Check if Arduino is available.
| timeOut | timout for waiting on response |
Reimplemented in CommandMessenger.Bluetooth.BluetoothConnectionManager.
Disconnect from Arduino.
Reimplemented in CommandMessenger.Bluetooth.BluetoothConnectionManager.
| void CommandMessenger.ConnectionManager.SetControlToInvokeOn | ( | Control | controlToInvokeOn | ) |
Sets a control to invoke on.
| controlToInvokeOn | The control to invoke on. |
Reimplemented in CommandMessenger.Bluetooth.BluetoothConnectionManager.
Start connection manager. Will set up thread, but will not start scanning.
Start scanning for devices.
Reimplemented in CommandMessenger.Bluetooth.BluetoothConnectionManager.
Start watchdog. Will check if connection gets interrupted.
Stop connection manager.
Stop scanning for devices.
Reimplemented in CommandMessenger.Bluetooth.BluetoothConnectionManager.
Stop watchdog.
Reimplemented in CommandMessenger.Bluetooth.BluetoothConnectionManager.


What To Eat?
Choose A Restaurant!
Steak Escape
Chick-Fil-A
Domino's
Wendy's
McDonald's
Burger King
Waffle House
Taco Bell
Sonic
Choose!


Home
About Us
Industry
Services
Solutions
Investors
Newsroom
Insight
Careers
Contact Us
Login
Client Login
Admin login
Client Login
User Name
*
User name is required.
Invalid User Name.
Password
*
Password is required.
Remember me
Login
Are you new client?
Sign Up
here


Professional Details Form
Please fill the Professional Details below.
Joined
Years of Service
Company
Position
Submit professional details
Finish your application!


Why doing SQL with F# Interactive ?
- F# Interactive enable exploring data interactively, analyzing, visualizing, and testing against live data sources.
- This interactive development then scales directly up to full .NET component development, without having to rewrite code.